Struct template basic_expr
boost::proto::basic_expr — Simplified representation of a node in an expression tree.
Synopsis
template<typename Tag, typename Args, long Arity = Args::arity>
struct basic_expr {
typedef Tag proto_tag;
typedef Args proto_args;
typedef mpl::long_< Arity > proto_arity;
typedef proto::basic_default_domain proto_domain;
typedef basic_expr proto_grammar;
typedef basic_expr proto_base_expr;
typedef basic_expr proto_derived_expr;
typedef typename Args::childN
proto_childN;
template<typename... A> static basic_expr const make(A const &...);
basic_expr & proto_base();
basic_expr const & proto_base() const;
};
Description
<proto::basic_expr<>
>является узлом в дереве шаблона выражения. Это контейнер для детских поддеревьев. Он также служит конечными узлами дерева.
<Tag
>- тип, представляющий операцию, закодированную этим выражением. Обычно это одна из структур в пространстве имен<boost::proto::tag
>, но это не обязательно. Если<Arity
>равно 0, то этот<expr<>
>тип представляет собой лист в дереве выражения.
<Args
>— список типов, представляющих детей этого выражения. Он является одним из<proto::list1<>
>,<proto::list2<>
>и т.д. Все типы детей должны быть либо<proto::expr<>
>, либо<proto::basic_expr<>&
>(или их расширения через<proto::extends<>
>или<BOOST_PROTO_EXTENDS()
>), если<Arity
>не равен 0, в этом случае<Args
>должен быть<proto::term<T>
>, где<T
>может быть любого типа.
<proto::basic_expr<>
>является допустимой последовательностью случайного доступа Fusion, где элементами последовательности являются детские выражения.
basic_expr
public static functions
- <
template<typename...A>staticbasic_exprconstmake(Aconst&...a);
>Требуется: | Число приведенных аргументов должно быть<max(Arity,1) > |
Возврат: | Новый<basic_expr >объект инициализирован с указанными аргументами. |
basic_expr
public member functions
- <
basic_expr&proto_base();
>
- <
basic_exprconst&proto_base()const;
>Это перегруженная функция члена, предусмотренная для удобства. Он отличается от вышеуказанной функции только тем, какие аргументы он принимает.