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)
.