Struct template expr
boost::proto::expr — Representation of a node in an expression tree.
Synopsis
template<typename Tag, typename Args, long Arity = Args::arity>
struct expr {
typedef Tag proto_tag;
typedef Args proto_args;
typedef mpl::long_< Arity > proto_arity;
typedef proto::default_domain proto_domain;
typedef proto::basic_expr< Tag, Args, Arity > proto_grammar;
typedef expr proto_base_expr;
typedef expr proto_derived_expr;
typedef typename Args::childN proto_childN;
template<typename Signature>
struct result {
typedef unspecified type;
};
template<typename... A> static expr const make(A const &...);
expr & proto_base();
expr const & proto_base() const;
template<typename A> unspecified operator=(A &);
template<typename A> unspecified operator=(A const &);
template<typename A> unspecified operator=(A &) const;
template<typename A> unspecified operator=(A const &) const;
template<typename A> unspecified operator[](A &);
template<typename A> unspecified operator[](A const &);
template<typename A> unspecified operator[](A &) const;
template<typename A> unspecified operator[](A const &) const;
template<typename... A> unspecified operator()(A const &...);
template<typename... A> unspecified operator()(A const &...) const;
proto_childN childN;
static const long proto_arity_c;
};
Description
Прото::expr<> - узел в дереве шаблонов выражения. Это контейнер для своих детей-поддеревьев. Он также служит терминальными узлами дерева.
Tag - это тип, представляющий операцию, закодированную этим выражением. Это, как правило, один из конструкций в boost::proto::tag пространства имен, но это не должно быть. Если Arity 0, то это expr<> Тип представляет лист в дереве экспрессии.
Args - это список типов, представляющих детей этого выражения. Это моментация одного из прото::list1<>, прото::list2<> и т.д. Типы детей должны быть либо прото::expr<> или прото::basic_expr<> (или расширения через прото::extends<> или BOOST_PROTO_EXDS(1>), если только Арити не 0>Args может быть.
прото::expr<> - это действительная последовательность случайного доступа Fusion, где элементы последовательности являются детскими выражениями.
expr public static functions
- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Количество представленных аргументов должно быть
max(Arity,1).