| <?xml version="1.0" encoding="utf-8"?> |
| <header name="boost/proto/traits.hpp"> |
| <para> |
| Contains definitions for various expression traits and utilities like |
| <computeroutput><classname alt="boost::proto::tag_of">proto::tag_of</classname><></computeroutput> and |
| <computeroutput><classname alt="boost::proto::arity_of">proto::arity_of</classname><></computeroutput>; |
| the functions |
| <computeroutput><functionname alt="boost::proto::value">proto::value</functionname>()</computeroutput>, |
| <computeroutput><functionname alt="boost::proto::left">proto::left</functionname>()</computeroutput> and |
| <computeroutput><functionname alt="boost::proto::right">proto::right</functionname>()</computeroutput>; |
| <computeroutput><functionname alt="boost::proto::child">proto::child</functionname>()</computeroutput>, |
| <computeroutput><functionname alt="boost::proto::child_c">proto::child_c</functionname>()</computeroutput>, |
| <computeroutput><functionname alt="boost::proto::as_expr">proto::as_expr</functionname>()</computeroutput>, |
| <computeroutput><functionname alt="boost::proto::as_child">proto::as_child</functionname>()</computeroutput>, |
| and assorted helpers. |
| </para> |
| <namespace name="boost"> |
| <namespace name="proto"> |
| <struct name="is_callable"> |
| <template> |
| <template-type-parameter name="T"/> |
| </template> |
| <purpose>Boolean metafunction which tells whether a type is a callable |
| <conceptname>PolymorphicFunctionObject</conceptname> or not.</purpose> |
| <description> |
| <para> |
| <computeroutput>proto::is_callable<></computeroutput> is used by the |
| <computeroutput><classname alt="proto::when">proto::when<></classname></computeroutput> |
| transform to determine whether a function type <computeroutput>R(A<subscript>1</subscript>,...A<subscript>n</subscript>)</computeroutput> |
| is a <conceptname>CallableTransform</conceptname> or an <conceptname>ObjectTransform</conceptname>. |
| The former are evaluated using <computeroutput><classname>proto::call<></classname></computeroutput> |
| and the later with <computeroutput><classname>proto::make<></classname></computeroutput>. |
| If <computeroutput>proto::is_callable<R>::value</computeroutput> is <computeroutput>true</computeroutput>, |
| the function type is a <conceptname>CallableTransform</conceptname>; otherwise, it is an <conceptname>ObjectTransform</conceptname>. |
| </para> |
| <para> |
| Unless specialized for a type |
| <computeroutput>T</computeroutput>, <computeroutput>proto::is_callable<T>::value</computeroutput> |
| is computed as follows: |
| <itemizedlist> |
| <listitem> |
| <para> |
| If <computeroutput>T</computeroutput> is a template type |
| <computeroutput>X<Y<subscript>0</subscript>,...Y<subscript>n</subscript>></computeroutput>, |
| where all <computeroutput>Y<subscript>x</subscript></computeroutput> are types for |
| <computeroutput>x</computeroutput> in <computeroutput>[0,n]</computeroutput>, |
| <computeroutput>proto::is_callable<T>::value</computeroutput> is |
| <computeroutput>boost::is_same<Y<subscript>n</subscript>, <classname>proto::callable</classname>>::value</computeroutput>. |
| </para> |
| </listitem> |
| <listitem> |
| <para> |
| If <computeroutput>T</computeroutput> is derived from <computeroutput><classname>proto::callable</classname></computeroutput>, |
| <computeroutput>proto::is_callable<T>::value</computeroutput> is <computeroutput>true</computeroutput>. |
| </para> |
| </listitem> |
| <listitem> |
| <para> |
| Otherwise, <computeroutput>proto::is_callable<T>::value</computeroutput> |
| is <computeroutput>false</computeroutput>. |
| </para> |
| </listitem> |
| </itemizedlist> |
| </para> |
| </description> |
| <inherit><type>mpl::bool_<<replaceable>true-or-false</replaceable>></type></inherit> |
| </struct> |
| |
| <struct name="is_aggregate"> |
| <template> |
| <template-type-parameter name="T"/> |
| </template> |
| <purpose>A Boolean metafunction that indicates whether a type requires aggregate initialization. </purpose> |
| <description> |
| <para> |
| <computeroutput>proto::is_aggregate<></computeroutput> is used by the |
| <computeroutput><classname>proto::make<></classname></computeroutput> transform to determine how |
| to construct an object of some type <computeroutput>T</computeroutput>, given some initialization arguments |
| <computeroutput>a<subscript>0</subscript>,...a<subscript>n</subscript></computeroutput>. |
| If <computeroutput>proto::is_aggregate<T>::value</computeroutput> is <computeroutput>true</computeroutput>, |
| then an object of type <computeroutput>T</computeroutput> will be initialized as |
| <computeroutput>T t = {a<subscript>0</subscript>,...a<subscript>n</subscript>};</computeroutput>. |
| Otherwise, it will be initialized as |
| <computeroutput>T t(a<subscript>0</subscript>,...a<subscript>n</subscript>)</computeroutput>. |
| </para> |
| <para> |
| Note: <computeroutput><classname>proto::expr<></classname></computeroutput> and |
| <computeroutput><classname>proto::basic_expr<></classname></computeroutput>are aggregates. |
| </para> |
| </description> |
| <inherit><type>mpl::bool_<<replaceable>true-or-false</replaceable>></type></inherit> |
| </struct> |
| |
| <namespace name="functional"> |
| <struct name="as_expr"> |
| <template> |
| <template-type-parameter name="Domain"> |
| <default><classname>proto::default_domain</classname></default> |
| </template-type-parameter> |
| </template> |
| <purpose>A callable <conceptname>PolymorphicFunctionObject</conceptname> that is equivalent to the |
| <computeroutput><functionname alt="proto::as_expr">proto::as_expr()</functionname></computeroutput> function. |
| </purpose> |
| <inherit><type><classname>proto::callable</classname></type></inherit> |
| <struct-specialization name="result"> |
| <template> |
| <template-type-parameter name="This"/> |
| <template-type-parameter name="T"/> |
| </template> |
| <specialization> |
| <template-arg>This(T)</template-arg> |
| </specialization> |
| <inherit><type><classname>proto::result_of::as_expr</classname>< typename remove_reference< T >::type, Domain ></type></inherit> |
| </struct-specialization> |
| <method-group name="public member functions"> |
| <method name="operator()" cv="const"> |
| <type>typename <classname>proto::result_of::as_expr</classname>< T, Domain >::type</type> |
| <template> |
| <template-type-parameter name="T"/> |
| </template> |
| <parameter name="t"> |
| <paramtype>T &</paramtype> |
| <description> |
| <para>The object to wrap. </para> |
| </description> |
| </parameter> |
| <description> |
| <para> |
| Wrap an object in a Proto terminal if it isn't a Proto expression already. |
| </para> |
| </description> |
| <returns> |
| <para> |
| <computeroutput><functionname>proto::as_expr</functionname><Domain>(t)</computeroutput> |
| </para> |
| </returns> |
| </method> |
| <method name="operator()" cv="const"> |
| <type>typename <classname>proto::result_of::as_expr</classname>< T const, Domain >::type</type> |
| <template> |
| <template-type-parameter name="T"/> |
| </template> |
| <parameter name="t"> |
| <paramtype>T const &</paramtype> |
| </parameter> |
| <description> |
| <para>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </para> |
| </description> |
| </method> |
| </method-group> |
| </struct> |
| |
| <struct name="as_child"> |
| <template> |
| <template-type-parameter name="Domain"> |
| <default><classname>proto::default_domain</classname></default> |
| </template-type-parameter> |
| </template> |
| <purpose> |
| A callable <conceptname>PolymorphicFunctionObject</conceptname> that is equivalent to the |
| <computeroutput><functionname alt="proto::as_child">proto::as_child()</functionname></computeroutput> function. |
| </purpose> |
| <inherit><type><classname>proto::callable</classname></type></inherit> |
| <struct-specialization name="result"> |
| <template> |
| <template-type-parameter name="This"/> |
| <template-type-parameter name="T"/> |
| </template> |
| <specialization> |
| <template-arg>This(T)</template-arg> |
| </specialization> |
| <inherit><type><classname>proto::result_of::as_child</classname>< typename remove_reference< T >::type, Domain ></type></inherit> |
| </struct-specialization> |
| <method-group name="public member functions"> |
| <method name="operator()" cv="const"> |
| <type>typename <classname>proto::result_of::as_child</classname>< T, Domain >::type</type> |
| <template> |
| <template-type-parameter name="T"/> |
| </template> |
| <parameter name="t"> |
| <paramtype>T &</paramtype> |
| <description> |
| <para>The object to wrap. </para> |
| </description> |
| </parameter> |
| <description> |
| <para> |
| Wrap an object in a Proto terminal if it isn't a Proto expression already. |
| </para> |
| </description> |
| <returns> |
| <para> |
| <computeroutput><functionname>proto::as_child</functionname><Domain>(t)</computeroutput> |
| </para> |
| </returns> |
| </method> |
| <method name="operator()" cv="const"> |
| <type>typename <classname>proto::result_of::as_child</classname>< T const, Domain >::type</type> |
| <template> |
| <template-type-parameter name="T"/> |
| </template> |
| <parameter name="t"> |
| <paramtype>T const &</paramtype> |
| </parameter> |
| <description> |
| <para>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </para> |
| </description> |
| </method> |
| </method-group> |
| </struct> |
| |
| <struct name="child_c"> |
| <template> |
| <template-nontype-parameter name="N"> |
| <type>long</type> |
| </template-nontype-parameter> |
| </template> |
| <purpose> |
| A callable <conceptname>PolymorphicFunctionObject</conceptname> that is equivalent to the |
| <computeroutput><functionname alt="proto::child_c">proto::child_c()</functionname></computeroutput> function. |
| </purpose> |
| <inherit><type><classname>proto::callable</classname></type></inherit> |
| <struct-specialization name="result"> |
| <template> |
| <template-type-parameter name="This"/> |
| <template-type-parameter name="Expr"/> |
| </template> |
| <specialization> |
| <template-arg>This(Expr)</template-arg> |
| </specialization> |
| <inherit><type><classname>proto::result_of::child_c</classname>< Expr, N ></type></inherit> |
| </struct-specialization> |
| <method-group name="public member functions"> |
| <method name="operator()" cv="const"> |
| <type>typename <classname>proto::result_of::child_c</classname>< Expr &, N >::type</type> |
| <template> |
| <template-type-parameter name="Expr"/> |
| </template> |
| <parameter name="expr"> |
| <paramtype>Expr &</paramtype> |
| <description> |
| <para>The expression node. </para> |
| </description> |
| </parameter> |
| <description> |
| <para> |
| Return the <replaceable>N</replaceable><superscript>th</superscript> child of the given expression. |
| </para> |
| </description> |
| <requires> |
| <para> |
| <computeroutput><classname>proto::is_expr</classname><Expr>::value</computeroutput> is |
| <computeroutput>true</computeroutput> |
| </para> |
| <para> |
| <computeroutput>N < Expr::proto_arity::value</computeroutput> |
| </para> |
| </requires> |
| <returns> |
| <para> |
| <computeroutput><functionname>proto::child_c</functionname><N>(expr)</computeroutput> |
| </para> |
| </returns> |
| <throws> |
| <simpara>Will not throw.</simpara> |
| </throws> |
| </method> |
| <method name="operator()" cv="const"> |
| <type>typename <classname>proto::result_of::child_c</classname>< Expr const &, N >::type</type> |
| <template> |
| <template-type-parameter name="Expr"/> |
| </template> |
| <parameter name="expr"> |
| <paramtype>Expr const &</paramtype> |
| </parameter> |
| <description> |
| <para>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </para> |
| </description> |
| </method> |
| </method-group> |
| </struct> |
| |
| <struct name="child"> |
| <template> |
| <template-type-parameter name="N"> |
| <default>mpl::long_<0></default> |
| </template-type-parameter> |
| </template> |
| <purpose>A callable <conceptname>PolymorphicFunctionObject</conceptname> that is equivalent to the |
| <computeroutput><functionname alt="proto::child">proto::child()</functionname></computeroutput> function.</purpose> |
| <description> |
| <para> |
| A callable <conceptname>PolymorphicFunctionObject</conceptname> that is equivalent to the |
| <computeroutput><functionname alt="proto::child">proto::child()</functionname></computeroutput> |
| function. <computeroutput>N</computeroutput> is required to be an MPL Integral Constant. |
| </para> |
| </description> |
| <inherit><type><classname>proto::callable</classname></type></inherit> |
| <struct-specialization name="result"> |
| <template> |
| <template-type-parameter name="This"/> |
| <template-type-parameter name="Expr"/> |
| </template> |
| <specialization> |
| <template-arg>This(Expr)</template-arg> |
| </specialization> |
| <inherit> |
| <type><classname>proto::result_of::child</classname>< Expr, N ></type> |
| </inherit> |
| </struct-specialization> |
| <method-group name="public member functions"> |
| <method name="operator()" cv="const"> |
| <type>typename <classname>proto::result_of::child</classname>< Expr &, N >::type</type> |
| <template> |
| <template-type-parameter name="Expr"/> |
| </template> |
| <parameter name="expr"> |
| <paramtype>Expr &</paramtype> |
| <description> |
| <para>The expression node. </para> |
| </description> |
| </parameter> |
| <description> |
| <para> |
| Return the <replaceable>N</replaceable><superscript>th</superscript> child of the given expression. |
| </para> |
| </description> |
| <requires> |
| <para> |
| <computeroutput><classname>proto::is_expr</classname><Expr>::value</computeroutput> is |
| <computeroutput>true</computeroutput> |
| </para> |
| <para> |
| <computeroutput>N::value < Expr::proto_arity::value</computeroutput> |
| </para> |
| </requires> |
| <returns> |
| <para> |
| <computeroutput><functionname>proto::child</functionname><N>(expr)</computeroutput> |
| </para> |
| </returns> |
| <throws> |
| <simpara>Will not throw.</simpara> |
| </throws> |
| </method> |
| <method name="operator()" cv="const"> |
| <type>typename <classname>proto::result_of::child</classname>< Expr const &, N >::type</type> |
| <template> |
| <template-type-parameter name="Expr"/> |
| </template> |
| <parameter name="expr"> |
| <paramtype>Expr const &</paramtype> |
| </parameter> |
| <description> |
| <para>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </para> |
| </description> |
| </method> |
| </method-group> |
| </struct> |
| |
| <struct name="value"> |
| <purpose> |
| A callable <conceptname>PolymorphicFunctionObject</conceptname> that is equivalent to the |
| <computeroutput><functionname alt="proto::value">proto::value()</functionname></computeroutput> function. |
| </purpose> |
| <inherit><type><classname>proto::callable</classname></type></inherit> |
| <struct-specialization name="result"> |
| <template> |
| <template-type-parameter name="This"/> |
| <template-type-parameter name="Expr"/> |
| </template> |
| <specialization> |
| <template-arg>This(Expr)</template-arg> |
| </specialization> |
| <inherit> |
| <type><classname>proto::result_of::value</classname>< Expr ></type> |
| </inherit> |
| </struct-specialization> |
| <method-group name="public member functions"> |
| <method name="operator()" cv="const"> |
| <type>typename <classname>proto::result_of::value</classname>< Expr & >::type</type> |
| <template> |
| <template-type-parameter name="Expr"/> |
| </template> |
| <parameter name="expr"> |
| <paramtype>Expr &</paramtype> |
| <description> |
| <para>The terminal expression node. </para> |
| </description> |
| </parameter> |
| <description> |
| <para> |
| Return the value of the given terminal expression. |
| </para> |
| </description> |
| <requires> |
| <para> |
| <computeroutput><classname>proto::is_expr</classname><Expr>::value</computeroutput> is |
| <computeroutput>true</computeroutput> |
| </para> |
| <para> |
| <computeroutput>0 == Expr::proto_arity::value</computeroutput> |
| </para> |
| </requires> |
| <returns> |
| <para> |
| <computeroutput><functionname>proto::value</functionname>(expr)</computeroutput> |
| </para> |
| </returns> |
| <throws> |
| <simpara>Will not throw.</simpara> |
| </throws> |
| </method> |
| <method name="operator()" cv="const"> |
| <type>typename <classname>proto::result_of::value</classname>< Expr const & >::type</type> |
| <template> |
| <template-type-parameter name="Expr"/> |
| </template> |
| <parameter name="expr"> |
| <paramtype>Expr const &</paramtype> |
| </parameter> |
| <description> |
| <para>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </para> |
| </description> |
| </method> |
| </method-group> |
| </struct> |
| |
| <struct name="left"> |
| <purpose>A callable <conceptname>PolymorphicFunctionObject</conceptname> that is equivalent to the |
| <computeroutput><functionname alt="proto::left">proto::left()</functionname></computeroutput> function.</purpose> |
| <struct-specialization name="result"> |
| <template> |
| <template-type-parameter name="This"/> |
| <template-type-parameter name="Expr"/> |
| </template> |
| <specialization> |
| <template-arg>This(Expr)</template-arg> |
| </specialization> |
| <inherit> |
| <type><classname>proto::result_of::left</classname>< Expr ></type> |
| </inherit> |
| </struct-specialization> |
| <inherit> |
| <type><classname>proto::callable</classname></type> |
| </inherit> |
| <method-group name="public member functions"> |
| <method name="operator()" cv="const"> |
| <type>typename <classname>proto::result_of::left</classname>< Expr & >::type</type> |
| <template> |
| <template-type-parameter name="Expr"/> |
| </template> |
| <parameter name="expr"> |
| <paramtype>Expr &</paramtype> |
| <description> |
| <para>The expression node. </para> |
| </description> |
| </parameter> |
| <description> |
| <para> |
| Return the left child of the given binary expression. |
| </para> |
| </description> |
| <requires> |
| <para> |
| <computeroutput><classname>proto::is_expr</classname><Expr>::value</computeroutput> is |
| <computeroutput>true</computeroutput> |
| </para> |
| <para> |
| <computeroutput>2 == Expr::proto_arity::value</computeroutput> |
| </para> |
| </requires> |
| <returns> |
| <para> |
| <computeroutput><functionname>proto::left</functionname>(expr)</computeroutput> |
| </para> |
| </returns> |
| <throws> |
| <simpara>Will not throw.</simpara> |
| </throws> |
| </method> |
| <method name="operator()" cv="const"> |
| <type>typename <classname>proto::result_of::left</classname>< Expr const & >::type</type> |
| <template> |
| <template-type-parameter name="Expr"/> |
| </template> |
| <parameter name="expr"> |
| <paramtype>Expr const &</paramtype> |
| </parameter> |
| <description> |
| <para>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </para> |
| </description> |
| </method> |
| </method-group> |
| </struct> |
| |
| <struct name="right"> |
| <purpose>A callable <conceptname>PolymorphicFunctionObject</conceptname> that is equivalent to the |
| <computeroutput><functionname alt="proto::right">proto::right()</functionname></computeroutput> function.</purpose> |
| <struct-specialization name="result"> |
| <template> |
| <template-type-parameter name="This"/> |
| <template-type-parameter name="Expr"/> |
| </template> |
| <specialization> |
| <template-arg>This(Expr)</template-arg> |
| </specialization> |
| <inherit> |
| <type><classname>proto::result_of::right</classname>< Expr ></type> |
| </inherit> |
| </struct-specialization> |
| <inherit> |
| <type><classname>proto::callable</classname></type> |
| </inherit> |
| <method-group name="public member functions"> |
| <method name="operator()" cv="const"> |
| <type>typename <classname>proto::result_of::right</classname>< Expr & >::type</type> |
| <template> |
| <template-type-parameter name="Expr"/> |
| </template> |
| <parameter name="expr"> |
| <paramtype>Expr &</paramtype> |
| <description> |
| <para>The expression node. </para> |
| </description> |
| </parameter> |
| <description> |
| <para>Return the right child of the given binary expression.</para> |
| </description> |
| <requires> |
| <para> |
| <computeroutput><classname>proto::is_expr</classname><Expr>::value</computeroutput> is <computeroutput>true</computeroutput> |
| </para> |
| <para> |
| <computeroutput>2 == Expr::proto_arity::value</computeroutput> |
| </para> |
| </requires> |
| <returns> |
| <para> |
| <computeroutput><functionname>proto::right</functionname>(expr)</computeroutput> |
| </para> |
| </returns> |
| <throws> |
| <simpara>Will not throw.</simpara> |
| </throws> |
| </method> |
| <method name="operator()" cv="const"> |
| <type>typename <classname>proto::result_of::right</classname>< Expr const & >::type</type> |
| <template> |
| <template-type-parameter name="Expr"/> |
| </template> |
| <parameter name="expr"> |
| <paramtype>Expr const &</paramtype> |
| </parameter> |
| </method> |
| </method-group> |
| </struct> |
| </namespace> |
| |
| <struct name="terminal"> |
| <template> |
| <template-type-parameter name="T"/> |
| </template> |
| <inherit><classname>proto::transform</classname>< terminal<T> ></inherit> |
| <purpose>A metafunction for generating terminal expression types, a grammar element for matching |
| terminal expressions, and |
| a <conceptname>PrimitiveTransform</conceptname> that returns the current expression unchanged. </purpose> |
| <struct name="impl"> |
| <template> |
| <template-type-parameter name="Expr"/> |
| <template-type-parameter name="State"/> |
| <template-type-parameter name="Data"/> |
| </template> |
| <inherit><classname>proto::transform_impl</classname>< Expr, State, Data ></inherit> |
| <typedef name="result_type"> |
| <type>Expr</type> |
| </typedef> |
| <method-group name="public member functions"> |
| <method name="operator()" cv="const"> |
| <type>Expr</type> |
| <parameter name="expr"> |
| <paramtype>typename impl::expr_param</paramtype> |
| <description> |
| <para>The current expression </para> |
| </description> |
| </parameter> |
| <parameter name=""> |
| <paramtype>typename impl::state_param</paramtype> |
| </parameter> |
| <parameter name=""> |
| <paramtype>typename impl::data_param</paramtype> |
| </parameter> |
| <requires> |
| <para> |
| <computeroutput><classname>proto::matches</classname><Expr, proto::terminal<T> >::value</computeroutput> is <computeroutput>true</computeroutput>. |
| </para> |
| </requires> |
| <returns> |
| <para> |
| <computeroutput>expr</computeroutput> |
| </para> |
| </returns> |
| <throws> |
| <simpara>Will not throw.</simpara> |
| </throws> |
| </method> |
| </method-group> |
| </struct> |
| <typedef name="type"> |
| <type><classname>proto::expr</classname>< <classname>proto::tag::terminal</classname>, <classname>proto::term</classname>< T > ></type> |
| </typedef> |
| <typedef name="proto_grammar"> |
| <type><classname>proto::basic_expr</classname>< <classname>proto::tag::terminal</classname>, <classname>proto::term</classname>< T > ></type> |
| </typedef> |
| </struct> |
| |
| <struct name="if_else_"> |
| <template> |
| <template-type-parameter name="T"/> |
| <template-type-parameter name="U"/> |
| <template-type-parameter name="V"/> |
| </template> |
| <inherit><classname>proto::transform</classname>< if_else_<T, U, V> ></inherit> |
| <purpose>A metafunction for generating ternary conditional expression types, a grammar element for |
| matching ternary conditional expressions, and |
| a <conceptname>PrimitiveTransform</conceptname> |
| that dispatches to the |
| <computeroutput><classname alt="proto::pass_through">proto::pass_through<></classname></computeroutput> |
| transform.</purpose> |
| <struct name="impl"> |
| <template> |
| <template-type-parameter name="Expr"/> |
| <template-type-parameter name="State"/> |
| <template-type-parameter name="Data"/> |
| </template> |
| <inherit> |
| <type><classname>proto::pass_through</classname><if_else_>::template impl<Expr, State, Data></type> |
| </inherit> |
| </struct> |
| <typedef name="type"> |
| <type><classname>proto::expr</classname>< <classname>proto::tag::if_else_</classname>, <classname alt="proto::listN">proto::list3</classname>< T, U, V > ></type> |
| </typedef> |
| <typedef name="proto_grammar"> |
| <type><classname>proto::basic_expr</classname>< <classname>proto::tag::if_else_</classname>, <classname alt="proto::listN">proto::list3</classname>< T, U, V > ></type> |
| </typedef> |
| </struct> |
| |
| <struct name="unary_plus"> |
| <template> |
| <template-type-parameter name="T"/> |
| </template> |
| <inherit><classname>proto::transform</classname>< unary_plus<T> ></inherit> |
| <purpose>A metafunction for generating unary plus expression types, |
| a grammar element for matching unary plus expressions, and |
| a <conceptname>PrimitiveTransform</conceptname> that dispatches to the |
| <computeroutput><classname alt="proto::pass_through">proto::pass_through<></classname></computeroutput> |
| transform.</purpose> |
| <struct name="impl"> |
| <template> |
| <template-type-parameter name="Expr"/> |
| <template-type-parameter name="State"/> |
| <template-type-parameter name="Data"/> |
| </template> |
| <inherit> |
| <type><classname>proto::pass_through</classname><unary_plus>::template impl<Expr, State, Data></type> |
| </inherit> |
| </struct> |
| <typedef name="type"> |
| <type><classname>proto::expr</classname>< <classname>proto::tag::unary_plus</classname>, <classname alt="proto::listN">proto::list1</classname>< T > ></type> |
| </typedef> |
| <typedef name="proto_grammar"> |
| <type><classname>proto::basic_expr</classname>< <classname>proto::tag::unary_plus</classname>, <classname alt="proto::listN">proto::list1</classname>< T > ></type> |
| </typedef> |
| </struct> |
| |
| <struct name="negate"> |
| <template> |
| <template-type-parameter name="T"/> |
| </template> |
| <inherit><classname>proto::transform</classname>< negate<T> ></inherit> |
| <purpose>A metafunction for generating unary minus expression types, |
| a grammar element for matching unary minus expressions, and |
| a <conceptname>PrimitiveTransform</conceptname> that dispatches to the |
| <computeroutput><classname alt="proto::pass_through">proto::pass_through<></classname></computeroutput> |
| transform.</purpose> |
| <struct name="impl"> |
| <template> |
| <template-type-parameter name="Expr"/> |
| <template-type-parameter name="State"/> |
| <template-type-parameter name="Data"/> |
| </template> |
| <inherit> |
| <type><classname>proto::pass_through</classname><negate>::template impl<Expr, State, Data></type> |
| </inherit> |
| </struct> |
| <typedef name="type"> |
| <type><classname>proto::expr</classname>< <classname>proto::tag::negate</classname>, <classname alt="proto::listN">proto::list1</classname>< T > ></type> |
| </typedef> |
| <typedef name="proto_grammar"> |
| <type><classname>proto::basic_expr</classname>< <classname>proto::tag::negate</classname>, <classname alt="proto::listN">proto::list1</classname>< T > ></type> |
| </typedef> |
| </struct> |
| |
| <struct name="dereference"> |
| <template> |
| <template-type-parameter name="T"/> |
| </template> |
| <inherit><classname>proto::transform</classname>< dereference<T> ></inherit> |
| <purpose>A metafunction for generating defereference expression types, |
| a grammar element for matching dereference expressions, and |
| a <conceptname>PrimitiveTransform</conceptname> that dispatches to the |
| <computeroutput><classname alt="proto::pass_through">proto::pass_through<></classname></computeroutput> |
| transform.</purpose> |
| <struct name="impl"> |
| <template> |
| <template-type-parameter name="Expr"/> |
| <template-type-parameter name="State"/> |
| <template-type-parameter name="Data"/> |
| </template> |
| <inherit> |
| <type><classname>proto::pass_through</classname><dereference>::template impl<Expr, State, Data></type> |
| </inherit> |
| </struct> |
| <typedef name="type"> |
| <type><classname>proto::expr</classname>< <classname>proto::tag::dereference</classname>, <classname alt="proto::listN">proto::list1</classname>< T > ></type> |
| </typedef> |
| <typedef name="proto_grammar"> |
| <type><classname>proto::basic_expr</classname>< <classname>proto::tag::dereference</classname>, <classname alt="proto::listN">proto::list1</classname>< T > ></type> |
| </typedef> |
| </struct> |
| |
| <struct name="complement"> |
| <template> |
| <template-type-parameter name="T"/> |
| </template> |
| <inherit><classname>proto::transform</classname>< complement<T> ></inherit> |
| <purpose>A metafunction for generating complement expression types, |
| a grammar element for matching complement expressions, and |
| a <conceptname>PrimitiveTransform</conceptname> that dispatches to the |
| <computeroutput><classname alt="proto::pass_through">proto::pass_through<></classname></computeroutput> |
| transform.</purpose> |
| <struct name="impl"> |
| <template> |
| <template-type-parameter name="Expr"/> |
| <template-type-parameter name="State"/> |
| <template-type-parameter name="Data"/> |
| </template> |
| <inherit> |
| <type><classname>proto::pass_through</classname><complement>::template impl<Expr, State, Data></type> |
| </inherit> |
| </struct> |
| <typedef name="type"> |
| <type><classname>proto::expr</classname>< <classname>proto::tag::complement</classname>, <classname alt="proto::listN">proto::list1</classname>< T > ></type> |
| </typedef> |
| <typedef name="proto_grammar"> |
| <type><classname>proto::basic_expr</classname>< <classname>proto::tag::complement</classname>, <classname alt="proto::listN">proto::list1</classname>< T > ></type> |
| </typedef> |
| </struct> |
| |
| <struct name="address_of"> |
| <template> |
| <template-type-parameter name="T"/> |
| </template> |
| <inherit><classname>proto::transform</classname>< address_of<T> ></inherit> |
| <purpose>A metafunction for generating address_of expression types, |
| a grammar element for matching address_of expressions, and |
| a <conceptname>PrimitiveTransform</conceptname> that dispatches to the |
| <computeroutput><classname alt="proto::pass_through">proto::pass_through<></classname></computeroutput> |
| transform.</purpose> |
| <struct name="impl"> |
| <template> |
| <template-type-parameter name="Expr"/> |
| <template-type-parameter name="State"/> |
| <template-type-parameter name="Data"/> |
| </template> |
| <inherit> |
| <type><classname>proto::pass_through</classname><address_of>::template impl<Expr, State, Data></type> |
| </inherit> |
| </struct> |
| <typedef name="type"> |
| <type><classname>proto::expr</classname>< <classname>proto::tag::address_of</classname>, <classname alt="proto::listN">proto::list1</classname>< T > ></type> |
| </typedef> |
| <typedef name="proto_grammar"> |
| <type><classname>proto::basic_expr</classname>< <classname>proto::tag::address_of</classname>, <classname alt="proto::listN">proto::list1</classname>< T > ></type> |
| </typedef> |
| </struct> |
| |
| <struct name="logical_not"> |
| <template> |
| <template-type-parameter name="T"/> |
| </template> |
| <inherit><classname>proto::transform</classname>< logical_not<T> ></inherit> |
| <purpose>A metafunction for generating logical_not expression types, |
| a grammar element for matching logical_not expressions, and |
| a <conceptname>PrimitiveTransform</conceptname> that dispatches to the |
| <computeroutput><classname alt="proto::pass_through">proto::pass_through<></classname></computeroutput> |
| transform.</purpose> |
| <struct name="impl"> |
| <template> |
| <template-type-parameter name="Expr"/> |
| <template-type-parameter name="State"/> |
| <template-type-parameter name="Data"/> |
| </template> |
| <inherit> |
| <type><classname>proto::pass_through</classname><logical_not>::template impl<Expr, State, Data></type> |
| </inherit> |
| </struct> |
| <typedef name="type"> |
| <type><classname>proto::expr</classname>< <classname>proto::tag::logical_not</classname>, <classname alt="proto::listN">proto::list1</classname>< T > ></type> |
| </typedef> |
| <typedef name="proto_grammar"> |
| <type><classname>proto::basic_expr</classname>< <classname>proto::tag::logical_not</classname>, <classname alt="proto::listN">proto::list1</classname>< T > ></type> |
| </typedef> |
| </struct> |
| |
| <struct name="pre_inc"> |
| <template> |
| <template-type-parameter name="T"/> |
| </template> |
| <inherit><classname>proto::transform</classname>< pre_inc<T> ></inherit> |
| <purpose>A metafunction for generating pre-increment expression types, |
| a grammar element for matching pre-increment expressions, and |
| a <conceptname>PrimitiveTransform</conceptname> that dispatches to the |
| <computeroutput><classname alt="proto::pass_through">proto::pass_through<></classname></computeroutput> |
| transform.</purpose> |
| <struct name="impl"> |
| <template> |
| <template-type-parameter name="Expr"/> |
| <template-type-parameter name="State"/> |
| <template-type-parameter name="Data"/> |
| </template> |
| <inherit> |
| <type><classname>proto::pass_through</classname><pre_inc>::template impl<Expr, State, Data></type> |
| </inherit> |
| </struct> |
| <typedef name="type"> |
| <type><classname>proto::expr</classname>< <classname>proto::tag::pre_inc</classname>, <classname alt="proto::listN">proto::list1</classname>< T > ></type> |
| </typedef> |
| <typedef name="proto_grammar"> |
| <type><classname>proto::basic_expr</classname>< <classname>proto::tag::pre_inc</classname>, <classname alt="proto::listN">proto::list1</classname>< T > ></type> |
| </typedef> |
| </struct> |
| |
| <struct name="pre_dec"> |
| <template> |
| <template-type-parameter name="T"/> |
| </template> |
| <inherit><classname>proto::transform</classname>< pre_dec<T> ></inherit> |
| <purpose>A metafunction for generating pre-decrement expression types, |
| a grammar element for matching pre-decrement expressions, and |
| a <conceptname>PrimitiveTransform</conceptname> that dispatches to the |
| <computeroutput><classname alt="proto::pass_through">proto::pass_through<></classname></computeroutput> |
| transform.</purpose> |
| <struct name="impl"> |
| <template> |
| <template-type-parameter name="Expr"/> |
| <template-type-parameter name="State"/> |
| <template-type-parameter name="Data"/> |
| </template> |
| <inherit> |
| <type><classname>proto::pass_through</classname><pre_dec>::template impl<Expr, State, Data></type> |
| </inherit> |
| </struct> |
| <typedef name="type"> |
| <type><classname>proto::expr</classname>< <classname>proto::tag::pre_dec</classname>, <classname alt="proto::listN">proto::list1</classname>< T > ></type> |
| </typedef> |
| <typedef name="proto_grammar"> |
| <type><classname>proto::basic_expr</classname>< <classname>proto::tag::pre_dec</classname>, <classname alt="proto::listN">proto::list1</classname>< T > ></type> |
| </typedef> |
| </struct> |
| |
| <struct name="post_inc"> |
| <template> |
| <template-type-parameter name="T"/> |
| </template> |
| <inherit><classname>proto::transform</classname>< post_inc<T> ></inherit> |
| <purpose>A metafunction for generating post-increment expression types, |
| a grammar element for matching post-increment expressions, and |
| a <conceptname>PrimitiveTransform</conceptname> that dispatches to the |
| <computeroutput><classname alt="proto::pass_through">proto::pass_through<></classname></computeroutput> |
| transform.</purpose> |
| <struct name="impl"> |
| <template> |
| <template-type-parameter name="Expr"/> |
| <template-type-parameter name="State"/> |
| <template-type-parameter name="Data"/> |
| </template> |
| <inherit> |
| <type><classname>proto::pass_through</classname><post_inc>::template impl<Expr, State, Data></type> |
| </inherit> |
| </struct> |
| <typedef name="type"> |
| <type><classname>proto::expr</classname>< <classname>proto::tag::post_inc</classname>, <classname alt="proto::listN">proto::list1</classname>< T > ></type> |
| </typedef> |
| <typedef name="proto_grammar"> |
| <type><classname>proto::basic_expr</classname>< <classname>proto::tag::post_inc</classname>, <classname alt="proto::listN">proto::list1</classname>< T > ></type> |
| </typedef> |
| </struct> |
| |
| <struct name="post_dec"> |
| <template> |
| <template-type-parameter name="T"/> |
| </template> |
| <inherit><classname>proto::transform</classname>< post_dec<T> ></inherit> |
| <purpose>A metafunction for generating post-decrement expression types, |
| a grammar element for matching post-decrement expressions, and |
| a <conceptname>PrimitiveTransform</conceptname> that dispatches to the |
| <computeroutput><classname alt="proto::pass_through">proto::pass_through<></classname></computeroutput> |
| transform.</purpose> |
| <struct name="impl"> |
| <template> |
| <template-type-parameter name="Expr"/> |
| <template-type-parameter name="State"/> |
| <template-type-parameter name="Data"/> |
| </template> |
| <inherit> |
| <type><classname>proto::pass_through</classname><post_dec>::template impl<Expr, State, Data></type> |
| </inherit> |
| </struct> |
| <typedef name="type"> |
| <type><classname>proto::expr</classname>< <classname>proto::tag::post_dec</classname>, <classname alt="proto::listN">proto::list1</classname>< T > ></type> |
| </typedef> |
| <typedef name="proto_grammar"> |
| <type> |
| <classname>proto::basic_expr</classname>< <classname>proto::tag::post_dec</classname>, <classname alt="proto::listN">proto::list1</classname>< T > > |
| </type> |
| </typedef> |
| </struct> |
| |
| <struct name="shift_left"> |
| <template> |
| <template-type-parameter name="T"/> |
| <template-type-parameter name="U"/> |
| </template> |
| <inherit><classname>proto::transform</classname>< shift_left<T, U> ></inherit> |
| <purpose>A metafunction for generating left-shift expression types, |
| a grammar element for matching left-shift expressions, and |
| a <conceptname>PrimitiveTransform</conceptname> that dispatches to the |
| <computeroutput><classname alt="proto::pass_through">proto::pass_through<></classname></computeroutput> |
| transform.</purpose> |
| <struct name="impl"> |
| <template> |
| <template-type-parameter name="Expr"/> |
| <template-type-parameter name="State"/> |
| <template-type-parameter name="Data"/> |
| </template> |
| <inherit> |
| <type><classname>proto::pass_through</classname><shift_left>::template impl<Expr, State, Data></type> |
| </inherit> |
| </struct> |
| <typedef name="type"> |
| <type><classname>proto::expr</classname>< <classname>proto::tag::shift_left</classname>, <classname alt="proto::listN">proto::list2</classname>< T, U > ></type> |
| </typedef> |
| <typedef name="proto_grammar"> |
| <type><classname>proto::basic_expr</classname>< <classname>proto::tag::shift_left</classname>, <classname alt="proto::listN">proto::list2</classname>< T, U > ></type> |
| </typedef> |
| </struct> |
| |
| <struct name="shift_right"> |
| <template> |
| <template-type-parameter name="T"/> |
| <template-type-parameter name="U"/> |
| </template> |
| <inherit><classname>proto::transform</classname>< shift_right<T, U> ></inherit> |
| <purpose>A metafunction for generating right-shift expression types, |
| a grammar element for matching right-shift expressions, and a |
| <conceptname>PrimitiveTransform</conceptname> that dispatches to the |
| <computeroutput><classname alt="proto::pass_through">proto::pass_through<></classname></computeroutput> |
| transform.</purpose> |
| <struct name="impl"> |
| <template> |
| <template-type-parameter name="Expr"/> |
| <template-type-parameter name="State"/> |
| <template-type-parameter name="Data"/> |
| </template> |
| <inherit> |
| <type><classname>proto::pass_through</classname><shift_right>::template impl<Expr, State, Data></type> |
| </inherit> |
| </struct> |
| <typedef name="type"> |
| <type><classname>proto::expr</classname>< <classname>proto::tag::shift_right</classname>, <classname alt="proto::listN">proto::list2</classname>< T, U > ></type> |
| </typedef> |
| <typedef name="proto_grammar"> |
| <type><classname>proto::basic_expr</classname>< <classname>proto::tag::shift_right</classname>, <classname alt="proto::listN">proto::list2</classname>< T, U > ></type> |
| </typedef> |
| </struct> |
| |
| <struct name="multiplies"> |
| <template> |
| <template-type-parameter name="T"/> |
| <template-type-parameter name="U"/> |
| </template> |
| <inherit><classname>proto::transform</classname>< multiplies<T, U> ></inherit> |
| <purpose>A metafunction for generating multiplies expression types, |
| a grammar element for matching multiplies expressions, and |
| a <conceptname>PrimitiveTransform</conceptname> that dispatches to the |
| <computeroutput><classname alt="proto::pass_through">proto::pass_through<></classname></computeroutput> |
| transform.</purpose> |
| <struct name="impl"> |
| <template> |
| <template-type-parameter name="Expr"/> |
| <template-type-parameter name="State"/> |
| <template-type-parameter name="Data"/> |
| </template> |
| <inherit> |
| <type><classname>proto::pass_through</classname><multiplies>::template impl<Expr, State, Data></type> |
| </inherit> |
| </struct> |
| <typedef name="type"> |
| <type><classname>proto::expr</classname>< <classname>proto::tag::multiplies</classname>, <classname alt="proto::listN">proto::list2</classname>< T, U > ></type> |
| </typedef> |
| <typedef name="proto_grammar"> |
| <type><classname>proto::basic_expr</classname>< <classname>proto::tag::multiplies</classname>, <classname alt="proto::listN">proto::list2</classname>< T, U > ></type> |
| </typedef> |
| </struct> |
| |
| <struct name="divides"> |
| <template> |
| <template-type-parameter name="T"/> |
| <template-type-parameter name="U"/> |
| </template> |
| <inherit><classname>proto::transform</classname>< divides<T, U> ></inherit> |
| <purpose>A metafunction for generating divides expression types, |
| a grammar element for matching divides expressions, and |
| a <conceptname>PrimitiveTransform</conceptname> that dispatches to the |
| <computeroutput><classname alt="proto::pass_through">proto::pass_through<></classname></computeroutput> |
| transform.</purpose> |
| <struct name="impl"> |
| <template> |
| <template-type-parameter name="Expr"/> |
| <template-type-parameter name="State"/> |
| <template-type-parameter name="Data"/> |
| </template> |
| <inherit> |
| <type><classname>proto::pass_through</classname><divides>::template impl<Expr, State, Data></type> |
| </inherit> |
| </struct> |
| <typedef name="type"> |
| <type><classname>proto::expr</classname>< <classname>proto::tag::divides</classname>, <classname alt="proto::listN">proto::list2</classname>< T, U > ></type> |
| </typedef> |
| <typedef name="proto_grammar"> |
| <type><classname>proto::basic_expr</classname>< <classname>proto::tag::divides</classname>, <classname alt="proto::listN">proto::list2</classname>< T, U > ></type> |
| </typedef> |
| </struct> |
| |
| <struct name="modulus"> |
| <template> |
| <template-type-parameter name="T"/> |
| <template-type-parameter name="U"/> |
| </template> |
| <inherit><classname>proto::transform</classname>< modulus<T, U> ></inherit> |
| <purpose>A metafunction for generating modulus expression types, |
| a grammar element for matching modulus expressions, and |
| a <conceptname>PrimitiveTransform</conceptname> that dispatches to the |
| <computeroutput><classname alt="proto::pass_through">proto::pass_through<></classname></computeroutput> |
| transform.</purpose> |
| <struct name="impl"> |
| <template> |
| <template-type-parameter name="Expr"/> |
| <template-type-parameter name="State"/> |
| <template-type-parameter name="Data"/> |
| </template> |
| <inherit> |
| <type><classname>proto::pass_through</classname><modulus>::template impl<Expr, State, Data></type> |
| </inherit> |
| </struct> |
| <typedef name="type"> |
| <type><classname>proto::expr</classname>< <classname>proto::tag::modulus</classname>, <classname alt="proto::listN">proto::list2</classname>< T, U > ></type> |
| </typedef> |
| <typedef name="proto_grammar"> |
| <type><classname>proto::basic_expr</classname>< <classname>proto::tag::modulus</classname>, <classname alt="proto::listN">proto::list2</classname>< T, U > ></type> |
| </typedef> |
| </struct> |
| |
| <struct name="plus"> |
| <template> |
| <template-type-parameter name="T"/> |
| <template-type-parameter name="U"/> |
| </template> |
| <inherit><classname>proto::transform</classname>< plus<T, U> ></inherit> |
| <purpose>A metafunction for generating binary plus expression types, |
| a grammar element for matching binary plus expressions, and |
| a <conceptname>PrimitiveTransform</conceptname> that dispatches to the |
| <computeroutput><classname alt="proto::pass_through">proto::pass_through<></classname></computeroutput> |
| transform.</purpose> |
| <struct name="impl"> |
| <template> |
| <template-type-parameter name="Expr"/> |
| <template-type-parameter name="State"/> |
| <template-type-parameter name="Data"/> |
| </template> |
| <inherit> |
| <type><classname>proto::pass_through</classname><plus>::template impl<Expr, State, Data></type> |
| </inherit> |
| </struct> |
| <typedef name="type"> |
| <type><classname>proto::expr</classname>< <classname>proto::tag::plus</classname>, <classname alt="proto::listN">proto::list2</classname>< T, U > ></type> |
| </typedef> |
| <typedef name="proto_grammar"> |
| <type><classname>proto::basic_expr</classname>< <classname>proto::tag::plus</classname>, <classname alt="proto::listN">proto::list2</classname>< T, U > ></type> |
| </typedef> |
| </struct> |
| |
| <struct name="minus"> |
| <template> |
| <template-type-parameter name="T"/> |
| <template-type-parameter name="U"/> |
| </template> |
| <inherit><classname>proto::transform</classname>< minus<T, U> ></inherit> |
| <purpose>A metafunction for generating binary minus expression types, |
| a grammar element for matching binary minus expressions, and |
| a <conceptname>PrimitiveTransform</conceptname> that dispatches to the |
| <computeroutput><classname alt="proto::pass_through">proto::pass_through<></classname></computeroutput> |
| transform.</purpose> |
| <struct name="impl"> |
| <template> |
| <template-type-parameter name="Expr"/> |
| <template-type-parameter name="State"/> |
| <template-type-parameter name="Data"/> |
| </template> |
| <inherit> |
| <type><classname>proto::pass_through</classname><minus>::template impl<Expr, State, Data></type> |
| </inherit> |
| </struct> |
| <typedef name="type"> |
| <type><classname>proto::expr</classname>< <classname>proto::tag::minus</classname>, <classname alt="proto::listN">proto::list2</classname>< T, U > ></type> |
| </typedef> |
| <typedef name="proto_grammar"> |
| <type><classname>proto::basic_expr</classname>< <classname>proto::tag::minus</classname>, <classname alt="proto::listN">proto::list2</classname>< T, U > ></type> |
| </typedef> |
| </struct> |
| |
| <struct name="less"> |
| <template> |
| <template-type-parameter name="T"/> |
| <template-type-parameter name="U"/> |
| </template> |
| <inherit><classname>proto::transform</classname>< less<T, U> ></inherit> |
| <purpose>A metafunction for generating less expression types, |
| a grammar element for matching less expressions, and |
| a <conceptname>PrimitiveTransform</conceptname> that dispatches to the |
| <computeroutput><classname alt="proto::pass_through">proto::pass_through<></classname></computeroutput> |
| transform.</purpose> |
| <struct name="impl"> |
| <template> |
| <template-type-parameter name="Expr"/> |
| <template-type-parameter name="State"/> |
| <template-type-parameter name="Data"/> |
| </template> |
| <inherit> |
| <type><classname>proto::pass_through</classname><less>::template impl<Expr, State, Data></type> |
| </inherit> |
| </struct> |
| <typedef name="type"> |
| <type><classname>proto::expr</classname>< <classname>proto::tag::less</classname>, <classname alt="proto::listN">proto::list2</classname>< T, U > ></type> |
| </typedef> |
| <typedef name="proto_grammar"> |
| <type><classname>proto::basic_expr</classname>< <classname>proto::tag::less</classname>, <classname alt="proto::listN">proto::list2</classname>< T, U > ></type> |
| </typedef> |
| </struct> |
| |
| <struct name="greater"> |
| <template> |
| <template-type-parameter name="T"/> |
| <template-type-parameter name="U"/> |
| </template> |
| <inherit><classname>proto::transform</classname>< greater<T, U> ></inherit> |
| <purpose>A metafunction for generating greater expression types, |
| a grammar element for matching greater expressions, and |
| a <conceptname>PrimitiveTransform</conceptname> that dispatches to the |
| <computeroutput><classname alt="proto::pass_through">proto::pass_through<></classname></computeroutput> |
| transform.</purpose> |
| <struct name="impl"> |
| <template> |
| <template-type-parameter name="Expr"/> |
| <template-type-parameter name="State"/> |
| <template-type-parameter name="Data"/> |
| </template> |
| <inherit> |
| <type><classname>proto::pass_through</classname><greater>::template impl<Expr, State, Data></type> |
| </inherit> |
| </struct> |
| <typedef name="type"> |
| <type><classname>proto::expr</classname>< <classname>proto::tag::greater</classname>, <classname alt="proto::listN">proto::list2</classname>< T, U > ></type> |
| </typedef> |
| <typedef name="proto_grammar"> |
| <type><classname>proto::basic_expr</classname>< <classname>proto::tag::greater</classname>, <classname alt="proto::listN">proto::list2</classname>< T, U > ></type> |
| </typedef> |
| </struct> |
| |
| <struct name="less_equal"> |
| <template> |
| <template-type-parameter name="T"/> |
| <template-type-parameter name="U"/> |
| </template> |
| <inherit><classname>proto::transform</classname>< less_equal<T, U> ></inherit> |
| <purpose>A metafunction for generating less-or-equal expression types, |
| a grammar element for matching less-or-equal expressions, and |
| a <conceptname>PrimitiveTransform</conceptname> that dispatches to the |
| <computeroutput><classname alt="proto::pass_through">proto::pass_through<></classname></computeroutput> |
| transform.</purpose> |
| <struct name="impl"> |
| <template> |
| <template-type-parameter name="Expr"/> |
| <template-type-parameter name="State"/> |
| <template-type-parameter name="Data"/> |
| </template> |
| <inherit> |
| <type><classname>proto::pass_through</classname><less_equal>::template impl<Expr, State, Data></type> |
| </inherit> |
| </struct> |
| <typedef name="type"> |
| <type><classname>proto::expr</classname>< <classname>proto::tag::less_equal</classname>, <classname alt="proto::listN">proto::list2</classname>< T, U > ></type> |
| </typedef> |
| <typedef name="proto_grammar"> |
| <type><classname>proto::basic_expr</classname>< <classname>proto::tag::less_equal</classname>, <classname alt="proto::listN">proto::list2</classname>< T, U > ></type> |
| </typedef> |
| </struct> |
| |
| <struct name="greater_equal"> |
| <template> |
| <template-type-parameter name="T"/> |
| <template-type-parameter name="U"/> |
| </template> |
| <inherit><classname>proto::transform</classname>< greater_equal<T, U> ></inherit> |
| <purpose>A metafunction for generating greater-or-equal expression types, |
| a grammar element for matching greater-or-equal expressions, and |
| a <conceptname>PrimitiveTransform</conceptname> that dispatches to the |
| <computeroutput><classname alt="proto::pass_through">proto::pass_through<></classname></computeroutput> |
| transform.</purpose> |
| <struct name="impl"> |
| <template> |
| <template-type-parameter name="Expr"/> |
| <template-type-parameter name="State"/> |
| <template-type-parameter name="Data"/> |
| </template> |
| <inherit> |
| <type><classname>proto::pass_through</classname><greater_equal>::template impl<Expr, State, Data></type> |
| </inherit> |
| </struct> |
| <typedef name="type"> |
| <type><classname>proto::expr</classname>< <classname>proto::tag::greater_equal</classname>, <classname alt="proto::listN">proto::list2</classname>< T, U > ></type> |
| </typedef> |
| <typedef name="proto_grammar"> |
| <type><classname>proto::basic_expr</classname>< <classname>proto::tag::greater_equal</classname>, <classname alt="proto::listN">proto::list2</classname>< T, U > ></type> |
| </typedef> |
| </struct> |
| |
| <struct name="equal_to"> |
| <template> |
| <template-type-parameter name="T"/> |
| <template-type-parameter name="U"/> |
| </template> |
| <inherit><classname>proto::transform</classname>< equal_to<T, U> ></inherit> |
| <purpose>A metafunction for generating equal-to expression types, |
| a grammar element for matching equal-to expressions, and |
| a <conceptname>PrimitiveTransform</conceptname> that dispatches to the |
| <computeroutput><classname alt="proto::pass_through">proto::pass_through<></classname></computeroutput> |
| transform.</purpose> |
| <struct name="impl"> |
| <template> |
| <template-type-parameter name="Expr"/> |
| <template-type-parameter name="State"/> |
| <template-type-parameter name="Data"/> |
| </template> |
| <inherit> |
| <type><classname>proto::pass_through</classname><equal_to>::template impl<Expr, State, Data></type> |
| </inherit> |
| </struct> |
| <typedef name="type"> |
| <type><classname>proto::expr</classname>< <classname>proto::tag::equal_to</classname>, <classname alt="proto::listN">proto::list2</classname>< T, U > ></type> |
| </typedef> |
| <typedef name="proto_grammar"> |
| <type><classname>proto::basic_expr</classname>< <classname>proto::tag::equal_to</classname>, <classname alt="proto::listN">proto::list2</classname>< T, U > ></type> |
| </typedef> |
| </struct> |
| |
| <struct name="not_equal_to"> |
| <template> |
| <template-type-parameter name="T"/> |
| <template-type-parameter name="U"/> |
| </template> |
| <inherit><classname>proto::transform</classname>< not_equal_to<T, U> ></inherit> |
| <purpose>A metafunction for generating not-equal-to expression types, |
| a grammar element for matching not-equal-to expressions, and |
| a <conceptname>PrimitiveTransform</conceptname> that dispatches to the |
| <computeroutput><classname alt="proto::pass_through">proto::pass_through<></classname></computeroutput> |
| transform.</purpose> |
| <struct name="impl"> |
| <template> |
| <template-type-parameter name="Expr"/> |
| <template-type-parameter name="State"/> |
| <template-type-parameter name="Data"/> |
| </template> |
| <inherit> |
| <type><classname>proto::pass_through</classname><mot_equal_to>::template impl<Expr, State, Data></type> |
| </inherit> |
| </struct> |
| <typedef name="type"> |
| <type><classname>proto::expr</classname>< <classname>proto::tag::not_equal_to</classname>, <classname alt="proto::listN">proto::list2</classname>< T, U > ></type> |
| </typedef> |
| <typedef name="proto_grammar"> |
| <type><classname>proto::basic_expr</classname>< <classname>proto::tag::not_equal_to</classname>, <classname alt="proto::listN">proto::list2</classname>< T, U > ></type> |
| </typedef> |
| </struct> |
| |
| <struct name="logical_or"> |
| <template> |
| <template-type-parameter name="T"/> |
| <template-type-parameter name="U"/> |
| </template> |
| <inherit><classname>proto::transform</classname>< logical_or<T, U> ></inherit> |
| <purpose>A metafunction for generating logical-or expression types, |
| a grammar element for matching logical-or expressions, and |
| a <conceptname>PrimitiveTransform</conceptname> that dispatches to the |
| <computeroutput><classname alt="proto::pass_through">proto::pass_through<></classname></computeroutput> |
| transform.</purpose> |
| <struct name="impl"> |
| <template> |
| <template-type-parameter name="Expr"/> |
| <template-type-parameter name="State"/> |
| <template-type-parameter name="Data"/> |
| </template> |
| <inherit> |
| <type><classname>proto::pass_through</classname><logical_or>::template impl<Expr, State, Data></type> |
| </inherit> |
| </struct> |
| <typedef name="type"> |
| <type><classname>proto::expr</classname>< <classname>proto::tag::logical_or</classname>, <classname alt="proto::listN">proto::list2</classname>< T, U > ></type> |
| </typedef> |
| <typedef name="proto_grammar"> |
| <type><classname>proto::basic_expr</classname>< <classname>proto::tag::logical_or</classname>, <classname alt="proto::listN">proto::list2</classname>< T, U > ></type> |
| </typedef> |
| </struct> |
| |
| <struct name="logical_and"> |
| <template> |
| <template-type-parameter name="T"/> |
| <template-type-parameter name="U"/> |
| </template> |
| <inherit><classname>proto::transform</classname>< logical_and<T, U> ></inherit> |
| <purpose>A metafunction for generating logical-and expression types, |
| a grammar element for matching logical-and expressions, and |
| a <conceptname>PrimitiveTransform</conceptname> that dispatches to the |
| <computeroutput><classname alt="proto::pass_through">proto::pass_through<></classname></computeroutput> |
| transform.</purpose> |
| <struct name="impl"> |
| <template> |
| <template-type-parameter name="Expr"/> |
| <template-type-parameter name="State"/> |
| <template-type-parameter name="Data"/> |
| </template> |
| <inherit> |
| <type><classname>proto::pass_through</classname><logical_and>::template impl<Expr, State, Data></type> |
| </inherit> |
| </struct> |
| <typedef name="type"> |
| <type><classname>proto::expr</classname>< <classname>proto::tag::logical_and</classname>, <classname alt="proto::listN">proto::list2</classname>< T, U > ></type> |
| </typedef> |
| <typedef name="proto_grammar"> |
| <type><classname>proto::basic_expr</classname>< <classname>proto::tag::logical_and</classname>, <classname alt="proto::listN">proto::list2</classname>< T, U > ></type> |
| </typedef> |
| </struct> |
| |
| <struct name="bitwise_and"> |
| <template> |
| <template-type-parameter name="T"/> |
| <template-type-parameter name="U"/> |
| </template> |
| <inherit><classname>proto::transform</classname>< bitwise_and<T, U> ></inherit> |
| <purpose>A metafunction for generating bitwise-and expression types, |
| a grammar element for matching bitwise-and expressions, and |
| a <conceptname>PrimitiveTransform</conceptname> that dispatches to the |
| <computeroutput><classname alt="proto::pass_through">proto::pass_through<></classname></computeroutput> |
| transform.</purpose> |
| <struct name="impl"> |
| <template> |
| <template-type-parameter name="Expr"/> |
| <template-type-parameter name="State"/> |
| <template-type-parameter name="Data"/> |
| </template> |
| <inherit> |
| <type><classname>proto::pass_through</classname><bitwise_and>::template impl<Expr, State, Data></type> |
| </inherit> |
| </struct> |
| <typedef name="type"> |
| <type><classname>proto::expr</classname>< <classname>proto::tag::bitwise_and</classname>, <classname alt="proto::listN">proto::list2</classname>< T, U > ></type> |
| </typedef> |
| <typedef name="proto_grammar"> |
| <type><classname>proto::basic_expr</classname>< <classname>proto::tag::bitwise_and</classname>, <classname alt="proto::listN">proto::list2</classname>< T, U > ></type> |
| </typedef> |
| </struct> |
| |
| <struct name="bitwise_or"> |
| <template> |
| <template-type-parameter name="T"/> |
| <template-type-parameter name="U"/> |
| </template> |
| <inherit><classname>proto::transform</classname>< bitwise_or<T, U> ></inherit> |
| <purpose>A metafunction for generating bitwise-or expression types, |
| a grammar element for matching bitwise-or expressions, and |
| a <conceptname>PrimitiveTransform</conceptname> that dispatches to the |
| <computeroutput><classname alt="proto::pass_through">proto::pass_through<></classname></computeroutput> |
| transform.</purpose> |
| <struct name="impl"> |
| <template> |
| <template-type-parameter name="Expr"/> |
| <template-type-parameter name="State"/> |
| <template-type-parameter name="Data"/> |
| </template> |
| <inherit> |
| <type><classname>proto::pass_through</classname><bitwise_or>::template impl<Expr, State, Data></type> |
| </inherit> |
| </struct> |
| <typedef name="type"> |
| <type><classname>proto::expr</classname>< <classname>proto::tag::bitwise_or</classname>, <classname alt="proto::listN">proto::list2</classname>< T, U > ></type> |
| </typedef> |
| <typedef name="proto_grammar"> |
| <type><classname>proto::basic_expr</classname>< <classname>proto::tag::bitwise_or</classname>, <classname alt="proto::listN">proto::list2</classname>< T, U > ></type> |
| </typedef> |
| </struct> |
| |
| <struct name="bitwise_xor"> |
| <template> |
| <template-type-parameter name="T"/> |
| <template-type-parameter name="U"/> |
| </template> |
| <inherit><classname>proto::transform</classname>< bitwise_xor<T, U> ></inherit> |
| <purpose>A metafunction for generating bitwise-xor expression types, |
| a grammar element for matching bitwise-xor expressions, and |
| a <conceptname>PrimitiveTransform</conceptname> that dispatches to the |
| <computeroutput><classname alt="proto::pass_through">proto::pass_through<></classname></computeroutput> |
| transform.</purpose> |
| <struct name="impl"> |
| <template> |
| <template-type-parameter name="Expr"/> |
| <template-type-parameter name="State"/> |
| <template-type-parameter name="Data"/> |
| </template> |
| <inherit> |
| <type><classname>proto::pass_through</classname><bitwise_xor>::template impl<Expr, State, Data></type> |
| </inherit> |
| </struct> |
| <typedef name="type"> |
| <type><classname>proto::expr</classname>< <classname>proto::tag::bitwise_xor</classname>, <classname alt="proto::listN">proto::list2</classname>< T, U > ></type> |
| </typedef> |
| <typedef name="proto_grammar"> |
| <type><classname>proto::basic_expr</classname>< <classname>proto::tag::bitwise_xor</classname>, <classname alt="proto::listN">proto::list2</classname>< T, U > ></type> |
| </typedef> |
| </struct> |
| |
| <struct name="comma"> |
| <template> |
| <template-type-parameter name="T"/> |
| <template-type-parameter name="U"/> |
| </template> |
| <inherit><classname>proto::transform</classname>< comma<T, U> ></inherit> |
| <purpose>A metafunction for generating comma expression types, |
| a grammar element for matching comma expressions, and |
| a <conceptname>PrimitiveTransform</conceptname> that dispatches to the |
| <computeroutput><classname alt="proto::pass_through">proto::pass_through<></classname></computeroutput> |
| transform.</purpose> |
| <struct name="impl"> |
| <template> |
| <template-type-parameter name="Expr"/> |
| <template-type-parameter name="State"/> |
| <template-type-parameter name="Data"/> |
| </template> |
| <inherit> |
| <type><classname>proto::pass_through</classname><comma>::template impl<Expr, State, Data></type> |
| </inherit> |
| </struct> |
| <typedef name="type"> |
| <type><classname>proto::expr</classname>< <classname>proto::tag::comma</classname>, <classname alt="proto::listN">proto::list2</classname>< T, U > ></type> |
| </typedef> |
| <typedef name="proto_grammar"> |
| <type><classname>proto::basic_expr</classname>< <classname>proto::tag::comma</classname>, <classname alt="proto::listN">proto::list2</classname>< T, U > ></type> |
| </typedef> |
| </struct> |
| |
| <struct name="mem_ptr"> |
| <template> |
| <template-type-parameter name="T"/> |
| <template-type-parameter name="U"/> |
| </template> |
| <inherit><classname>proto::transform</classname>< mem_ptr<T, U> ></inherit> |
| <struct name="impl"> |
| <template> |
| <template-type-parameter name="Expr"/> |
| <template-type-parameter name="State"/> |
| <template-type-parameter name="Data"/> |
| </template> |
| <inherit> |
| <type><classname>proto::pass_through</classname><mem_ptr>::template impl<Expr, State, Data></type> |
| </inherit> |
| </struct> |
| <typedef name="type"> |
| <type><classname>proto::expr</classname>< <classname>proto::tag::mem_ptr</classname>, <classname alt="proto::listN">proto::list2</classname>< T, U > ></type> |
| </typedef> |
| <typedef name="proto_grammar"> |
| <type><classname>proto::basic_expr</classname>< <classname>proto::tag::mem_ptr</classname>, <classname alt="proto::listN">proto::list2</classname>< T, U > ></type> |
| </typedef> |
| </struct> |
| |
| <struct name="assign"> |
| <template> |
| <template-type-parameter name="T"/> |
| <template-type-parameter name="U"/> |
| </template> |
| <inherit><classname>proto::transform</classname>< assign<T, U> ></inherit> |
| <purpose>A metafunction for generating assignment expression types, |
| a grammar element for matching assignment expressions, and |
| a <conceptname>PrimitiveTransform</conceptname> that dispatches to the |
| <computeroutput><classname alt="proto::pass_through">proto::pass_through<></classname></computeroutput> |
| transform.</purpose> |
| <struct name="impl"> |
| <template> |
| <template-type-parameter name="Expr"/> |
| <template-type-parameter name="State"/> |
| <template-type-parameter name="Data"/> |
| </template> |
| <inherit> |
| <type><classname>proto::pass_through</classname><assign>::template impl<Expr, State, Data></type> |
| </inherit> |
| </struct> |
| <typedef name="type"> |
| <type><classname>proto::expr</classname>< <classname>proto::tag::assign</classname>, <classname alt="proto::listN">proto::list2</classname>< T, U > ></type> |
| </typedef> |
| <typedef name="proto_grammar"> |
| <type><classname>proto::basic_expr</classname>< <classname>proto::tag::assign</classname>, <classname alt="proto::listN">proto::list2</classname>< T, U > ></type> |
| </typedef> |
| </struct> |
| |
| <struct name="shift_left_assign"> |
| <template> |
| <template-type-parameter name="T"/> |
| <template-type-parameter name="U"/> |
| </template> |
| <inherit><classname>proto::transform</classname>< shift_left_assign<T, U> ></inherit> |
| <purpose>A metafunction for generating left-shift-assign expression types, |
| a grammar element for matching left-shift-assign expressions, and |
| a <conceptname>PrimitiveTransform</conceptname> that dispatches to the |
| <computeroutput><classname alt="proto::pass_through">proto::pass_through<></classname></computeroutput> |
| transform.</purpose> |
| <struct name="impl"> |
| <template> |
| <template-type-parameter name="Expr"/> |
| <template-type-parameter name="State"/> |
| <template-type-parameter name="Data"/> |
| </template> |
| <inherit> |
| <type><classname>proto::pass_through</classname><shift_left_assign>::template impl<Expr, State, Data></type> |
| </inherit> |
| </struct> |
| <typedef name="type"> |
| <type><classname>proto::expr</classname>< <classname>proto::tag::shift_left_assign</classname>, <classname alt="proto::listN">proto::list2</classname>< T, U > ></type> |
| </typedef> |
| <typedef name="proto_grammar"> |
| <type><classname>proto::basic_expr</classname>< <classname>proto::tag::shift_left_assign</classname>, <classname alt="proto::listN">proto::list2</classname>< T, U > ></type> |
| </typedef> |
| </struct> |
| |
| <struct name="shift_right_assign"> |
| <template> |
| <template-type-parameter name="T"/> |
| <template-type-parameter name="U"/> |
| </template> |
| <inherit><classname>proto::transform</classname>< shift_right_assign<T, U> ></inherit> |
| <purpose>A metafunction for generating right-shift-assign expression types, |
| a grammar element for matching right-shift-assign expressions, and |
| a <conceptname>PrimitiveTransform</conceptname> that dispatches to the |
| <computeroutput><classname alt="proto::pass_through">proto::pass_through<></classname></computeroutput> |
| transform.</purpose> |
| <struct name="impl"> |
| <template> |
| <template-type-parameter name="Expr"/> |
| <template-type-parameter name="State"/> |
| <template-type-parameter name="Data"/> |
| </template> |
| <inherit> |
| <type><classname>proto::pass_through</classname><shift_right_assign>::template impl<Expr, State, Data></type> |
| </inherit> |
| </struct> |
| <typedef name="type"> |
| <type><classname>proto::expr</classname>< <classname>proto::tag::shift_right_assign</classname>, <classname alt="proto::listN">proto::list2</classname>< T, U > ></type> |
| </typedef> |
| <typedef name="proto_grammar"> |
| <type><classname>proto::basic_expr</classname>< <classname>proto::tag::shift_right_assign</classname>, <classname alt="proto::listN">proto::list2</classname>< T, U > ></type> |
| </typedef> |
| </struct> |
| |
| <struct name="multiplies_assign"> |
| <template> |
| <template-type-parameter name="T"/> |
| <template-type-parameter name="U"/> |
| </template> |
| <inherit><classname>proto::transform</classname>< multiplies_assign<T, U> ></inherit> |
| <purpose>A metafunction for generating multiplies-assign expression types, |
| a grammar element for matching multiplies-assign expressions, and |
| a <conceptname>PrimitiveTransform</conceptname> that dispatches to the |
| <computeroutput><classname alt="proto::pass_through">proto::pass_through<></classname></computeroutput> |
| transform.</purpose> |
| <struct name="impl"> |
| <template> |
| <template-type-parameter name="Expr"/> |
| <template-type-parameter name="State"/> |
| <template-type-parameter name="Data"/> |
| </template> |
| <inherit> |
| <type><classname>proto::pass_through</classname><multiplies_assign>::template impl<Expr, State, Data></type> |
| </inherit> |
| </struct> |
| <typedef name="type"> |
| <type><classname>proto::expr</classname>< <classname>proto::tag::multiplies_assign</classname>, <classname alt="proto::listN">proto::list2</classname>< T, U > ></type> |
| </typedef> |
| <typedef name="proto_grammar"> |
| <type><classname>proto::basic_expr</classname>< <classname>proto::tag::multiplies_assign</classname>, <classname alt="proto::listN">proto::list2</classname>< T, U > ></type> |
| </typedef> |
| </struct> |
| |
| <struct name="divides_assign"> |
| <template> |
| <template-type-parameter name="T"/> |
| <template-type-parameter name="U"/> |
| </template> |
| <inherit><classname>proto::transform</classname>< divides_assign<T, U> ></inherit> |
| <purpose>A metafunction for generating divides-assign expression types, |
| a grammar element for matching divides-assign expressions, and |
| a <conceptname>PrimitiveTransform</conceptname> that dispatches to the |
| <computeroutput><classname alt="proto::pass_through">proto::pass_through<></classname></computeroutput> |
| transform.</purpose> |
| <struct name="impl"> |
| <template> |
| <template-type-parameter name="Expr"/> |
| <template-type-parameter name="State"/> |
| <template-type-parameter name="Data"/> |
| </template> |
| <inherit> |
| <type><classname>proto::pass_through</classname><divides_assign>::template impl<Expr, State, Data></type> |
| </inherit> |
| </struct> |
| <typedef name="type"> |
| <type><classname>proto::expr</classname>< <classname>proto::tag::divides_assign</classname>, <classname alt="proto::listN">proto::list2</classname>< T, U > ></type> |
| </typedef> |
| <typedef name="proto_grammar"> |
| <type><classname>proto::basic_expr</classname>< <classname>proto::tag::divides_assign</classname>, <classname alt="proto::listN">proto::list2</classname>< T, U > ></type> |
| </typedef> |
| </struct> |
| |
| <struct name="modulus_assign"> |
| <template> |
| <template-type-parameter name="T"/> |
| <template-type-parameter name="U"/> |
| </template> |
| <inherit><classname>proto::transform</classname>< modulus_assign<T, U> ></inherit> |
| <purpose>A metafunction for generating modulus-assign expression types, |
| a grammar element for matching modulus-assign expressions, and |
| a <conceptname>PrimitiveTransform</conceptname> that dispatches to the |
| <computeroutput><classname alt="proto::pass_through">proto::pass_through<></classname></computeroutput> |
| transform.</purpose> |
| <struct name="impl"> |
| <template> |
| <template-type-parameter name="Expr"/> |
| <template-type-parameter name="State"/> |
| <template-type-parameter name="Data"/> |
| </template> |
| <inherit> |
| <type><classname>proto::pass_through</classname><modulus_assign>::template impl<Expr, State, Data></type> |
| </inherit> |
| </struct> |
| <typedef name="type"> |
| <type><classname>proto::expr</classname>< <classname>proto::tag::modulus_assign</classname>, <classname alt="proto::listN">proto::list2</classname>< T, U > ></type> |
| </typedef> |
| <typedef name="proto_grammar"> |
| <type><classname>proto::basic_expr</classname>< <classname>proto::tag::modulus_assign</classname>, <classname alt="proto::listN">proto::list2</classname>< T, U > ></type> |
| </typedef> |
| </struct> |
| |
| <struct name="plus_assign"> |
| <template> |
| <template-type-parameter name="T"/> |
| <template-type-parameter name="U"/> |
| </template> |
| <inherit><classname>proto::transform</classname>< plus_assign<T, U> ></inherit> |
| <purpose>A metafunction for generating plus-assign expression types, |
| a grammar element for matching plus-assign expressions, and |
| a <conceptname>PrimitiveTransform</conceptname> that dispatches to the |
| <computeroutput><classname alt="proto::pass_through">proto::pass_through<></classname></computeroutput> |
| transform.</purpose> |
| <struct name="impl"> |
| <template> |
| <template-type-parameter name="Expr"/> |
| <template-type-parameter name="State"/> |
| <template-type-parameter name="Data"/> |
| </template> |
| <inherit> |
| <type><classname>proto::pass_through</classname><plus_assign>::template impl<Expr, State, Data></type> |
| </inherit> |
| </struct> |
| <typedef name="type"> |
| <type><classname>proto::expr</classname>< <classname>proto::tag::plus_assign</classname>, <classname alt="proto::listN">proto::list2</classname>< T, U > ></type> |
| </typedef> |
| <typedef name="proto_grammar"> |
| <type><classname>proto::basic_expr</classname>< <classname>proto::tag::plus_assign</classname>, <classname alt="proto::listN">proto::list2</classname>< T, U > ></type> |
| </typedef> |
| </struct> |
| |
| <struct name="minus_assign"> |
| <template> |
| <template-type-parameter name="T"/> |
| <template-type-parameter name="U"/> |
| </template> |
| <inherit><classname>proto::transform</classname>< minus_assign<T, U> ></inherit> |
| <purpose>A metafunction for generating minus-assign expression types, |
| a grammar element for matching minus-assign expressions, and |
| a <conceptname>PrimitiveTransform</conceptname> that dispatches to the |
| <computeroutput><classname alt="proto::pass_through">proto::pass_through<></classname></computeroutput> |
| transform.</purpose> |
| <struct name="impl"> |
| <template> |
| <template-type-parameter name="Expr"/> |
| <template-type-parameter name="State"/> |
| <template-type-parameter name="Data"/> |
| </template> |
| <inherit> |
| <type><classname>proto::pass_through</classname><minus_assign>::template impl<Expr, State, Data></type> |
| </inherit> |
| </struct> |
| <typedef name="type"> |
| <type><classname>proto::expr</classname>< <classname>proto::tag::minus_assign</classname>, <classname alt="proto::listN">proto::list2</classname>< T, U > ></type> |
| </typedef> |
| <typedef name="proto_grammar"> |
| <type><classname>proto::basic_expr</classname>< <classname>proto::tag::minus_assign</classname>, <classname alt="proto::listN">proto::list2</classname>< T, U > ></type> |
| </typedef> |
| </struct> |
| |
| <struct name="bitwise_and_assign"> |
| <template> |
| <template-type-parameter name="T"/> |
| <template-type-parameter name="U"/> |
| </template> |
| <inherit><classname>proto::transform</classname>< bitwise_and_assign<T, U> ></inherit> |
| <purpose>A metafunction for generating bitwise-and-assign expression types, |
| a grammar element for matching bitwise-and-assign expressions, and |
| a <conceptname>PrimitiveTransform</conceptname> that dispatches to the |
| <computeroutput><classname alt="proto::pass_through">proto::pass_through<></classname></computeroutput> |
| transform.</purpose> |
| <struct name="impl"> |
| <template> |
| <template-type-parameter name="Expr"/> |
| <template-type-parameter name="State"/> |
| <template-type-parameter name="Data"/> |
| </template> |
| <inherit> |
| <type><classname>proto::pass_through</classname><bitwise_and_assign>::template impl<Expr, State, Data></type> |
| </inherit> |
| </struct> |
| <typedef name="type"> |
| <type><classname>proto::expr</classname>< <classname>proto::tag::bitwise_and_assign</classname>, <classname alt="proto::listN">proto::list2</classname>< T, U > ></type> |
| </typedef> |
| <typedef name="proto_grammar"> |
| <type><classname>proto::basic_expr</classname>< <classname>proto::tag::bitwise_and_assign</classname>, <classname alt="proto::listN">proto::list2</classname>< T, U > ></type> |
| </typedef> |
| </struct> |
| |
| <struct name="bitwise_or_assign"> |
| <template> |
| <template-type-parameter name="T"/> |
| <template-type-parameter name="U"/> |
| </template> |
| <inherit><classname>proto::transform</classname>< bitwise_or_assign<T, U> ></inherit> |
| <purpose>A metafunction for generating bitwise-or-assign expression types, |
| a grammar element for matching bitwise-or-assign expressions, and |
| a <conceptname>PrimitiveTransform</conceptname> that dispatches to the |
| <computeroutput><classname alt="proto::pass_through">proto::pass_through<></classname></computeroutput> |
| transform.</purpose> |
| <struct name="impl"> |
| <template> |
| <template-type-parameter name="Expr"/> |
| <template-type-parameter name="State"/> |
| <template-type-parameter name="Data"/> |
| </template> |
| <inherit> |
| <type><classname>proto::pass_through</classname><bitwise_or_assign>::template impl<Expr, State, Data></type> |
| </inherit> |
| </struct> |
| <typedef name="type"> |
| <type><classname>proto::expr</classname>< <classname>proto::tag::bitwise_or_assign</classname>, <classname alt="proto::listN">proto::list2</classname>< T, U > ></type> |
| </typedef> |
| <typedef name="proto_grammar"> |
| <type><classname>proto::basic_expr</classname>< <classname>proto::tag::bitwise_or_assign</classname>, <classname alt="proto::listN">proto::list2</classname>< T, U > ></type> |
| </typedef> |
| </struct> |
| |
| <struct name="bitwise_xor_assign"> |
| <template> |
| <template-type-parameter name="T"/> |
| <template-type-parameter name="U"/> |
| </template> |
| <inherit><classname>proto::transform</classname>< bitwise_xor_assign<T, U> ></inherit> |
| <purpose>A metafunction for generating bitwise-xor-assign expression types, |
| a grammar element for matching bitwise-xor-assign expressions, and |
| a <conceptname>PrimitiveTransform</conceptname> that dispatches to the |
| <computeroutput><classname alt="proto::pass_through">proto::pass_through<></classname></computeroutput> |
| transform.</purpose> |
| <struct name="impl"> |
| <template> |
| <template-type-parameter name="Expr"/> |
| <template-type-parameter name="State"/> |
| <template-type-parameter name="Data"/> |
| </template> |
| <inherit> |
| <type><classname>proto::pass_through</classname><bitwise_xor_assign>::template impl<Expr, State, Data></type> |
| </inherit> |
| </struct> |
| <typedef name="type"> |
| <type><classname>proto::expr</classname>< <classname>proto::tag::bitwise_xor_assign</classname>, <classname alt="proto::listN">proto::list2</classname>< T, U > ></type> |
| </typedef> |
| <typedef name="proto_grammar"> |
| <type><classname>proto::basic_expr</classname>< <classname>proto::tag::bitwise_xor_assign</classname>, <classname alt="proto::listN">proto::list2</classname>< T, U > ></type> |
| </typedef> |
| </struct> |
| |
| <struct name="subscript"> |
| <template> |
| <template-type-parameter name="T"/> |
| <template-type-parameter name="U"/> |
| </template> |
| <inherit><classname>proto::transform</classname>< subscript<T, U> ></inherit> |
| <purpose>A metafunction for generating subscript expression types, |
| a grammar element for matching subscript expressions, and |
| a <conceptname>PrimitiveTransform</conceptname> that dispatches to the |
| <computeroutput><classname alt="proto::pass_through">proto::pass_through<></classname></computeroutput> |
| transform.</purpose> |
| <struct name="impl"> |
| <template> |
| <template-type-parameter name="Expr"/> |
| <template-type-parameter name="State"/> |
| <template-type-parameter name="Data"/> |
| </template> |
| <inherit> |
| <type><classname>proto::pass_through</classname><subscript>::template impl<Expr, State, Data></type> |
| </inherit> |
| </struct> |
| <typedef name="type"> |
| <type><classname>proto::expr</classname>< <classname>proto::tag::subscript</classname>, <classname alt="proto::listN">proto::list2</classname>< T, U > ></type> |
| </typedef> |
| <typedef name="proto_grammar"> |
| <type><classname>proto::basic_expr</classname>< <classname>proto::tag::subscript</classname>, <classname alt="proto::listN">proto::list2</classname>< T, U > ></type> |
| </typedef> |
| </struct> |
| |
| <struct name="function"> |
| <template> |
| <template-type-parameter name="A" pack="1"/> |
| </template> |
| <inherit><classname>proto::transform</classname>< function<A...> ></inherit> |
| <purpose>A metafunction for generating function-call expression types, a grammar element for |
| matching function-call expressions, and |
| a <conceptname>PrimitiveTransform</conceptname> |
| that dispatches to the |
| <computeroutput><classname alt="proto::pass_through">proto::pass_through<></classname></computeroutput> |
| transform.</purpose> |
| <struct name="impl"> |
| <template> |
| <template-type-parameter name="Expr"/> |
| <template-type-parameter name="State"/> |
| <template-type-parameter name="Data"/> |
| </template> |
| <inherit> |
| <type><classname>proto::pass_through</classname><function>::template impl<Expr, State, Data></type> |
| </inherit> |
| </struct> |
| <typedef name="type"> |
| <type><classname>proto::expr</classname>< <classname>proto::tag::function</classname>, <classname alt="proto::listN">proto::list<replaceable>N</replaceable></classname>< A... > ></type> |
| </typedef> |
| <typedef name="proto_grammar"> |
| <type><classname>proto::basic_expr</classname>< <classname>proto::tag::function</classname>, <classname alt="proto::listN">proto::list<replaceable>N</replaceable></classname>< A... > ></type> |
| </typedef> |
| </struct> |
| |
| <struct name="nullary_expr"> |
| <template> |
| <template-type-parameter name="Tag"/> |
| <template-type-parameter name="T"/> |
| </template> |
| <inherit><classname>proto::transform</classname>< nullary_expr<Tag, T> ></inherit> |
| <purpose>A metafunction for generating nullary expression types, a grammar element for matching |
| nullary expressions, and |
| a <conceptname>PrimitiveTransform</conceptname> that returns the current expression unchanged. </purpose> |
| <description> |
| <para> |
| Use <computeroutput>proto::nullary_expr<<classname>proto::_</classname>, <classname>proto::_</classname>></computeroutput> |
| as a grammar element to match any nullary expression. |
| </para> |
| </description> |
| <struct name="impl"> |
| <template> |
| <template-type-parameter name="Expr"/> |
| <template-type-parameter name="State"/> |
| <template-type-parameter name="Data"/> |
| </template> |
| <inherit><classname>proto::transform_impl</classname>< Expr, State, Data ></inherit> |
| <typedef name="result_type"> |
| <type>Expr</type> |
| </typedef> |
| <method-group name="public member functions"> |
| <method name="operator()" cv="const"> |
| <type>Expr</type> |
| <parameter name="expr"> |
| <paramtype>typename impl::expr_param</paramtype> |
| <description> |
| <para>The current expression </para> |
| </description> |
| </parameter> |
| <parameter name=""> |
| <paramtype>typename impl::state_param</paramtype> |
| </parameter> |
| <parameter name=""> |
| <paramtype>typename impl::data_param</paramtype> |
| </parameter> |
| <requires> |
| <para> |
| <computeroutput><classname>proto::matches</classname><Expr, proto::nullary_expr<Tag, T> >::value</computeroutput> is <computeroutput>true</computeroutput>. |
| </para> |
| </requires> |
| <returns> |
| <para> |
| <computeroutput>expr</computeroutput> |
| </para> |
| </returns> |
| <throws> |
| <simpara>Will not throw.</simpara> |
| </throws> |
| </method> |
| </method-group> |
| </struct> |
| <typedef name="type"> |
| <type><classname>proto::expr</classname>< Tag, <classname>proto::term</classname>< T > ></type> |
| </typedef> |
| <typedef name="proto_grammar"> |
| <type><classname>proto::basic_expr</classname>< Tag, <classname>proto::term</classname>< T > ></type> |
| </typedef> |
| </struct> |
| |
| <struct name="unary_expr"> |
| <template> |
| <template-type-parameter name="Tag"/> |
| <template-type-parameter name="T"/> |
| </template> |
| <inherit><classname>proto::transform</classname>< unary_expr<Tag, T> ></inherit> |
| <purpose>A metafunction for generating unary expression types with a specified tag type, |
| a grammar element for matching unary expressions, and |
| a <conceptname>PrimitiveTransform</conceptname> |
| that dispatches to the |
| <computeroutput><classname alt="proto::pass_through">proto::pass_through<></classname></computeroutput> |
| transform.</purpose> |
| <description> |
| <para> |
| Use <computeroutput>proto::unary_expr<<classname>proto::_</classname>, <classname>proto::_</classname>></computeroutput> |
| as a grammar element to match any unary expression. |
| </para> |
| </description> |
| <struct name="impl"> |
| <template> |
| <template-type-parameter name="Expr"/> |
| <template-type-parameter name="State"/> |
| <template-type-parameter name="Data"/> |
| </template> |
| <inherit> |
| <type><classname>proto::pass_through</classname><unary_expr>::template impl<Expr, State, Data></type> |
| </inherit> |
| </struct> |
| <typedef name="type"> |
| <type><classname>proto::expr</classname>< Tag, <classname alt="proto::listN">proto::list1</classname>< T > ></type> |
| </typedef> |
| <typedef name="proto_grammar"> |
| <type><classname>proto::basic_expr</classname>< Tag, <classname alt="proto::listN">proto::list1</classname>< T > ></type> |
| </typedef> |
| </struct> |
| |
| <struct name="binary_expr"> |
| <template> |
| <template-type-parameter name="Tag"/> |
| <template-type-parameter name="T"/> |
| <template-type-parameter name="U"/> |
| </template> |
| <inherit><classname>proto::transform</classname>< binary_expr<Tag, T, U> ></inherit> |
| <purpose>A metafunction for generating binary expression types with a specified tag type, |
| a grammar element for matching binary expressions, and |
| a <conceptname>PrimitiveTransform</conceptname> |
| that dispatches to the |
| <computeroutput><classname alt="proto::pass_through">proto::pass_through<></classname></computeroutput> |
| transform.</purpose> |
| <description> |
| <para> |
| Use <computeroutput>proto::binary_expr<<classname>proto::_</classname>, <classname>proto::_</classname>, <classname>proto::_</classname>></computeroutput> as a grammar element to match any binary expression. |
| </para> |
| </description> |
| <struct name="impl"> |
| <template> |
| <template-type-parameter name="Expr"/> |
| <template-type-parameter name="State"/> |
| <template-type-parameter name="Data"/> |
| </template> |
| <inherit> |
| <type><classname>proto::pass_through</classname><binary_expr>::template impl<Expr, State, Data></type> |
| </inherit> |
| </struct> |
| <typedef name="type"> |
| <type><classname>proto::expr</classname>< Tag, <classname alt="proto::listN">proto::list2</classname>< T, U > ></type> |
| </typedef> |
| <typedef name="proto_grammar"> |
| <type><classname>proto::basic_expr</classname>< Tag, <classname alt="proto::listN">proto::list2</classname>< T, U > ></type> |
| </typedef> |
| </struct> |
| |
| <struct name="nary_expr"> |
| <template> |
| <template-type-parameter name="Tag"/> |
| <template-type-parameter name="A" pack="1"/> |
| </template> |
| <inherit><classname>proto::transform</classname>< nary_expr<Tag, A...> ></inherit> |
| <purpose>A metafunction for generating n-ary expression types with a specified tag type, |
| a grammar element for matching n-ary expressions, and |
| a <conceptname>PrimitiveTransform</conceptname> |
| that dispatches to the |
| <computeroutput><classname alt="proto::pass_through">proto::pass_through<></classname></computeroutput> |
| transform.</purpose> |
| <description> |
| <para> |
| Use <computeroutput>proto::nary_expr<<classname>proto::_</classname>, <classname>proto::vararg</classname><<classname>proto::_</classname>> ></computeroutput> |
| as a grammar element to match any n-ary expression; that is, any non-terminal. |
| </para> |
| </description> |
| <struct name="impl"> |
| <template> |
| <template-type-parameter name="Expr"/> |
| <template-type-parameter name="State"/> |
| <template-type-parameter name="Data"/> |
| </template> |
| <inherit> |
| <type><classname>proto::pass_through</classname><nary_expr>::template impl<Expr, State, Data></type> |
| </inherit> |
| </struct> |
| <typedef name="type"> |
| <type><classname>proto::expr</classname>< Tag, <classname alt="proto::listN">proto::list<replaceable>N</replaceable></classname>< A... > ></type> |
| </typedef> |
| <typedef name="proto_grammar"> |
| <type><classname>proto::basic_expr</classname>< Tag, <classname alt="proto::listN">proto::list<replaceable>N</replaceable></classname>< A... > ></type> |
| </typedef> |
| </struct> |
| |
| <struct name="is_expr"> |
| <template> |
| <template-type-parameter name="T"/> |
| </template> |
| <inherit><type>mpl::bool_<<replaceable>true-or-false</replaceable>></type></inherit> |
| <purpose>A Boolean metafunction that indicates whether a given type <computeroutput>T</computeroutput> |
| is a Proto expression type.</purpose> |
| <description> |
| <para> |
| If <computeroutput>T</computeroutput> is an instantiation of |
| <computeroutput><classname alt="proto::expr">proto::expr<></classname></computeroutput> or |
| <computeroutput><classname alt="proto::basic_expr">proto::basic_expr<></classname></computeroutput> or is an extension |
| (via <classname alt="proto::extends">proto::extends<></classname> or |
| <macroname>BOOST_PROTO_EXTENDS</macroname>()) of such an instantiation, |
| <computeroutput><classname>proto::is_expr</classname><T>::value</computeroutput> |
| is <computeroutput>true</computeroutput>. |
| Otherwise, <computeroutput><classname>proto::is_expr</classname><T>::value</computeroutput> |
| is <computeroutput>false</computeroutput>. |
| </para> |
| </description> |
| </struct> |
| |
| <struct name="tag_of"> |
| <template> |
| <template-type-parameter name="Expr"/> |
| </template> |
| <purpose>A metafunction that returns the tag type of a Proto expression. </purpose> |
| <typedef name="type"> |
| <type>typename Expr::proto_tag</type> |
| </typedef> |
| </struct> |
| |
| <struct name="arity_of"> |
| <template> |
| <template-type-parameter name="Expr"/> |
| </template> |
| <purpose>A metafunction that returns the arity of a Proto expression. </purpose> |
| <inherit><type>Expr::proto_arity</type></inherit> |
| </struct> |
| |
| <namespace name="result_of"> |
| <struct name="as_expr"> |
| <template> |
| <template-type-parameter name="T"/> |
| <template-type-parameter name="Domain"> |
| <default><classname>proto::default_domain</classname></default> |
| </template-type-parameter> |
| </template> |
| <purpose>A metafunction that computes the return type of the |
| <computeroutput><functionname>proto::as_expr</functionname>()</computeroutput> function.</purpose> |
| <description> |
| <para> |
| The <computeroutput>proto::result_of::as_expr<></computeroutput> metafunction turns types |
| into Proto expression types, if they are not already, in a domain-specific way. It is intended |
| for use to compute the type of a local variable that can hold the result of the |
| <computeroutput><functionname>proto::as_expr</functionname>()</computeroutput> function. |
| </para> |
| <para> |
| See <computeroutput><classname>proto::domain::as_expr</classname><></computeroutput> |
| for a complete description of the default behavior. |
| </para> |
| </description> |
| <typedef name="type"> |
| <type>typename Domain::template as_expr< T >::result_type</type> |
| </typedef> |
| </struct> |
| |
| <struct name="as_child"> |
| <template> |
| <template-type-parameter name="T"/> |
| <template-type-parameter name="Domain"> |
| <default><classname>proto::default_domain</classname></default> |
| </template-type-parameter> |
| </template> |
| <purpose>A metafunction that computes the return type of the |
| <computeroutput><functionname>proto::as_child</functionname>()</computeroutput> function.</purpose> |
| <description> |
| <para> |
| The <computeroutput>proto::result_of::as_child<></computeroutput> metafunction turns types |
| into Proto expression types, if they are not already, in a domain-specific way. It is used by Proto |
| to compute the type of an object to store as a child in another expression node. |
| </para> |
| <para> |
| See <computeroutput><classname>proto::domain::as_child</classname><></computeroutput> |
| for a complete description of the default behavior. |
| </para> |
| </description> |
| <typedef name="type"> |
| <type>typename Domain::template as_child< T >::result_type</type> |
| </typedef> |
| </struct> |
| |
| <struct name="child"> |
| <template> |
| <template-type-parameter name="Expr"/> |
| <template-type-parameter name="N"> |
| <default>mpl::long_<0></default> |
| </template-type-parameter> |
| </template> |
| <inherit><type><classname>proto::result_of::child_c</classname><Expr, N::value></type></inherit> |
| <purpose>A metafunction that returns the type of the <replaceable>N</replaceable><superscript>th</superscript> |
| child of a Proto expression, where N is an MPL Integral Constant. </purpose> |
| <description> |
| <para> |
| <computeroutput>proto::result_of::child<Expr, N></computeroutput> is equivalent to |
| <computeroutput><classname>proto::result_of::child_c</classname><Expr, N::value></computeroutput>. |
| </para> |
| </description> |
| </struct> |
| |
| <struct name="value"> |
| <template> |
| <template-type-parameter name="Expr"/> |
| </template> |
| <purpose>A metafunction that returns the type of the value of a terminal Proto expression. </purpose> |
| <typedef name="value_type"> |
| <description> |
| <para> |
| The raw type of the value as it is |
| stored within <computeroutput>Expr</computeroutput>. This may be a value or a reference. |
| </para> |
| </description> |
| <type>typename Expr::proto_child0</type> |
| </typedef> |
| <typedef name="type"> |
| <description> |
| <para> |
| If <computeroutput>Expr</computeroutput> is not a reference type, <computeroutput>type</computeroutput> |
| is computed as follows: |
| <itemizedlist> |
| <listitem> |
| <para> |
| <computeroutput>T const(&)[N]</computeroutput> becomes <computeroutput>T[N]</computeroutput> |
| </para> |
| </listitem> |
| <listitem> |
| <para> |
| <computeroutput>T[N]</computeroutput> becomes <computeroutput>T[N]</computeroutput> |
| </para> |
| </listitem> |
| <listitem> |
| <para> |
| <computeroutput>T(&)[N]</computeroutput> becomes <computeroutput>T[N]</computeroutput> |
| </para> |
| </listitem> |
| <listitem> |
| <para> |
| <computeroutput>R(&)(A...)</computeroutput> becomes <computeroutput>R(&)(A...)</computeroutput> |
| </para> |
| </listitem> |
| <listitem> |
| <para> |
| <computeroutput>T const &</computeroutput> becomes <computeroutput>T</computeroutput> |
| </para> |
| </listitem> |
| <listitem> |
| <para> |
| <computeroutput>T &</computeroutput> becomes <computeroutput>T</computeroutput> |
| </para> |
| </listitem> |
| <listitem> |
| <para> |
| <computeroutput>T</computeroutput> becomes <computeroutput>T</computeroutput> |
| </para> |
| </listitem> |
| </itemizedlist> |
| </para> |
| <para> |
| If <computeroutput>Expr</computeroutput> is a non-const reference type, <computeroutput>type</computeroutput> |
| is computed as follows: |
| <itemizedlist> |
| <listitem> |
| <para> |
| <computeroutput>T const(&)[N]</computeroutput> becomes <computeroutput>T const(&)[N]</computeroutput> |
| </para> |
| </listitem> |
| <listitem> |
| <para> |
| <computeroutput>T[N]</computeroutput> becomes <computeroutput>T(&)[N]</computeroutput> |
| </para> |
| </listitem> |
| <listitem> |
| <para> |
| <computeroutput>T(&)[N]</computeroutput> becomes <computeroutput>T(&)[N]</computeroutput> |
| </para> |
| </listitem> |
| <listitem> |
| <para> |
| <computeroutput>R(&)(A...)</computeroutput> becomes <computeroutput>R(&)(A...)</computeroutput> |
| </para> |
| </listitem> |
| <listitem> |
| <para> |
| <computeroutput>T const &</computeroutput> becomes <computeroutput>T const &</computeroutput> |
| </para> |
| </listitem> |
| <listitem> |
| <para> |
| <computeroutput>T &</computeroutput> becomes <computeroutput>T &</computeroutput> |
| </para> |
| </listitem> |
| <listitem> |
| <para> |
| <computeroutput>T</computeroutput> becomes <computeroutput>T &</computeroutput> |
| </para> |
| </listitem> |
| </itemizedlist> |
| </para> |
| <para> |
| If <computeroutput>Expr</computeroutput> is a const reference type, <computeroutput>type</computeroutput> |
| is computed as follows: |
| <itemizedlist> |
| <listitem> |
| <para> |
| <computeroutput>T const(&)[N]</computeroutput> becomes <computeroutput>T const(&)[N]</computeroutput> |
| </para> |
| </listitem> |
| <listitem> |
| <para> |
| <computeroutput>T[N]</computeroutput> becomes <computeroutput>T const(&)[N]</computeroutput> |
| </para> |
| </listitem> |
| <listitem> |
| <para> |
| <computeroutput>T(&)[N]</computeroutput> becomes <computeroutput>T(&)[N]</computeroutput> |
| </para> |
| </listitem> |
| <listitem> |
| <para> |
| <computeroutput>R(&)(A...)</computeroutput> becomes <computeroutput>R(&)(A...)</computeroutput> |
| </para> |
| </listitem> |
| <listitem> |
| <para> |
| <computeroutput>T const &</computeroutput> becomes <computeroutput>T const &</computeroutput> |
| </para> |
| </listitem> |
| <listitem> |
| <para> |
| <computeroutput>T &</computeroutput> becomes <computeroutput>T &</computeroutput> |
| </para> |
| </listitem> |
| <listitem> |
| <para> |
| <computeroutput>T</computeroutput> becomes <computeroutput>T const &</computeroutput> |
| </para> |
| </listitem> |
| </itemizedlist> |
| </para> |
| </description> |
| <type><replaceable>see-below</replaceable></type> |
| </typedef> |
| </struct> |
| |
| <struct name="left"> |
| <template> |
| <template-type-parameter name="Expr"/> |
| </template> |
| <inherit>proto::result_of::child_c< Expr, 0 ></inherit> |
| <purpose>A metafunction that returns the type of the left child of a binary Proto expression. </purpose> |
| <description> |
| <para> |
| <computeroutput>proto::result_of::left<Expr></computeroutput> is equivalent to |
| <computeroutput><classname>proto::result_of::child_c</classname><Expr, 0></computeroutput>. |
| </para> |
| </description> |
| </struct> |
| |
| <struct name="right"> |
| <template> |
| <template-type-parameter name="Expr"/> |
| </template> |
| <inherit>proto::result_of::child_c< Expr, 1 ></inherit> |
| <purpose>A metafunction that returns the type of the right child of a binary Proto expression. </purpose> |
| <description> |
| <para> |
| <computeroutput>proto::result_of::right<Expr></computeroutput> is equivalent to |
| <computeroutput><classname>proto::result_of::child_c</classname><Expr, 1></computeroutput>. |
| </para> |
| </description> |
| </struct> |
| |
| <struct name="child_c"> |
| <template> |
| <template-type-parameter name="Expr"/> |
| <template-nontype-parameter name="N"> |
| <type>long</type> |
| </template-nontype-parameter> |
| </template> |
| <purpose>A metafunction that returns the type of the <replaceable>N</replaceable><superscript>th</superscript> |
| child of a Proto expression. </purpose> |
| <description> |
| <para> |
| A metafunction that returns the type of the <replaceable>N</replaceable><superscript>th</superscript> |
| child of a Proto expression. <computeroutput>N</computeroutput> must be 0 or less than |
| <computeroutput>Expr::proto_arity::value</computeroutput>. |
| </para> |
| </description> |
| <typedef name="value_type"> |
| <description> |
| <para> |
| The raw type of the <replaceable>N</replaceable><superscript>th</superscript> child as it is stored |
| within <computeroutput>Expr</computeroutput>. This may be a value or a reference. |
| </para> |
| </description> |
| <type>typename Expr::proto_child0</type> |
| </typedef> |
| <typedef name="type"> |
| <description> |
| <para> |
| If <computeroutput>Expr</computeroutput> is not a reference type, <computeroutput>type</computeroutput> |
| is computed as follows: |
| <itemizedlist> |
| <listitem> |
| <para> |
| <computeroutput>T const &</computeroutput> becomes <computeroutput>T</computeroutput> |
| </para> |
| </listitem> |
| <listitem> |
| <para> |
| <computeroutput>T &</computeroutput> becomes <computeroutput>T</computeroutput> |
| </para> |
| </listitem> |
| <listitem> |
| <para> |
| <computeroutput>T</computeroutput> becomes <computeroutput>T</computeroutput> |
| </para> |
| </listitem> |
| </itemizedlist> |
| </para> |
| <para> |
| If <computeroutput>Expr</computeroutput> is a non-const reference type, <computeroutput>type</computeroutput> |
| is computed as follows: |
| <itemizedlist> |
| <listitem> |
| <para> |
| <computeroutput>T const &</computeroutput> becomes <computeroutput>T const &</computeroutput> |
| </para> |
| </listitem> |
| <listitem> |
| <para> |
| <computeroutput>T &</computeroutput> becomes <computeroutput>T &</computeroutput> |
| </para> |
| </listitem> |
| <listitem> |
| <para> |
| <computeroutput>T</computeroutput> becomes <computeroutput>T &</computeroutput> |
| </para> |
| </listitem> |
| </itemizedlist> |
| </para> |
| <para> |
| If <computeroutput>Expr</computeroutput> is a const reference type, <computeroutput>type</computeroutput> |
| is computed as follows: |
| <itemizedlist> |
| <listitem> |
| <para> |
| <computeroutput>T const &</computeroutput> becomes <computeroutput>T const &</computeroutput> |
| </para> |
| </listitem> |
| <listitem> |
| <para> |
| <computeroutput>T &</computeroutput> becomes <computeroutput>T &</computeroutput> |
| </para> |
| </listitem> |
| <listitem> |
| <para> |
| <computeroutput>T</computeroutput> becomes <computeroutput>T const &</computeroutput> |
| </para> |
| </listitem> |
| </itemizedlist> |
| </para> |
| </description> |
| <type><replaceable>see-below</replaceable></type> |
| </typedef> |
| </struct> |
| |
| </namespace> |
| |
| <overloaded-function name="as_expr"> |
| <signature> |
| <type>typename <classname>proto::result_of::as_expr</classname>< T >::type</type> |
| <template> |
| <template-type-parameter name="T"/> |
| </template> |
| <parameter name="t"> |
| <paramtype>T &</paramtype> |
| </parameter> |
| </signature> |
| <signature> |
| <type>typename <classname>proto::result_of::as_expr</classname>< T const >::type</type> |
| <template> |
| <template-type-parameter name="T"/> |
| </template> |
| <parameter name="t"> |
| <paramtype>T const &</paramtype> |
| </parameter> |
| </signature> |
| <signature> |
| <type>typename <classname>proto::result_of::as_expr</classname>< T, Domain >::type</type> |
| <template> |
| <template-type-parameter name="Domain"/> |
| <template-type-parameter name="T"/> |
| </template> |
| <parameter name="t"> |
| <paramtype>T &</paramtype> |
| </parameter> |
| </signature> |
| <signature> |
| <type>typename <classname>proto::result_of::as_expr</classname>< T const, Domain >::type</type> |
| <template> |
| <template-type-parameter name="Domain"/> |
| <template-type-parameter name="T"/> |
| </template> |
| <parameter name="t"> |
| <paramtype>T const &</paramtype> |
| </parameter> |
| </signature> |
| <purpose>A function that wraps non-Proto expression types in Proto terminals and leaves Proto |
| expression types alone.</purpose> |
| <description> |
| <para> |
| The <computeroutput>proto::as_expr()</computeroutput> function returns Proto expression |
| objects that are suitable for storage in a local variable. It turns non-Proto objects |
| into Proto terminals. Its behavior is domain-specific. By default, |
| non-Proto types are wrapped by value (if possible) in a new Proto terminal expression, |
| and objects that are already Proto expressions are returned by value. |
| </para> |
| <para> |
| If <computeroutput>Domain</computeroutput> is not explicitly specified, it is assumed to |
| be <computeroutput><classname>proto::default_domain</classname></computeroutput>. |
| </para> |
| <para> |
| See <computeroutput><classname>proto::domain::as_expr</classname><></computeroutput> |
| for a complete description of this function's default behavior. |
| </para> |
| </description> |
| <returns> |
| <computeroutput>typename Domain::template as_expr< T >()(t)</computeroutput> |
| </returns> |
| </overloaded-function> |
| |
| <overloaded-function name="as_child"> |
| <signature> |
| <type>typename <classname>proto::result_of::as_child</classname>< T >::type</type> |
| <template> |
| <template-type-parameter name="T"/> |
| </template> |
| <parameter name="t"> |
| <paramtype>T &</paramtype> |
| </parameter> |
| </signature> |
| <signature> |
| <type>typename <classname>proto::result_of::as_child</classname>< T const >::type</type> |
| <template> |
| <template-type-parameter name="T"/> |
| </template> |
| <parameter name="t"> |
| <paramtype>T const &</paramtype> |
| </parameter> |
| </signature> |
| <signature> |
| <type>typename <classname>proto::result_of::as_child</classname>< T, Domain >::type</type> |
| <template> |
| <template-type-parameter name="Domain"/> |
| <template-type-parameter name="T"/> |
| </template> |
| <parameter name="t"> |
| <paramtype>T &</paramtype> |
| </parameter> |
| </signature> |
| <signature> |
| <type>typename <classname>proto::result_of::as_child</classname>< T const, Domain >::type</type> |
| <template> |
| <template-type-parameter name="Domain"/> |
| <template-type-parameter name="T"/> |
| </template> |
| <parameter name="t"> |
| <paramtype>T const &</paramtype> |
| </parameter> |
| </signature> |
| <purpose>A function that wraps non-Proto objects in Proto terminals (by reference) and leaves |
| Proto expression types alone.</purpose> |
| <description> |
| <para> |
| The <computeroutput>proto::as_child()</computeroutput> function returns Proto expression |
| objects that are suitable for storage as child nodes in an expression tree. It turns |
| non-Proto objects into Proto terminals. Its behavior is domain-specific. By default, |
| non-Proto types are held wrapped by reference in a new Proto terminal expression, and |
| objects that are already Proto expressions are simply returned by reference. |
| </para> |
| <para> |
| If <computeroutput>Domain</computeroutput> is not explicitly specified, it is assumed to |
| be <computeroutput><classname>proto::default_domain</classname></computeroutput>. |
| </para> |
| <para> |
| See <computeroutput><classname>proto::domain::as_child</classname><></computeroutput> |
| for a complete description of this function's default behavior. |
| </para> |
| </description> |
| <returns> |
| <computeroutput>typename Domain::template as_child< T >()(t)</computeroutput> |
| </returns> |
| </overloaded-function> |
| |
| <overloaded-function name="child"> |
| <signature> |
| <type>typename <classname>proto::result_of::child</classname>< Expr &, N >::type</type> |
| <template> |
| <template-type-parameter name="N"/> |
| <template-type-parameter name="Expr"/> |
| </template> |
| <parameter name="expr"> |
| <paramtype>Expr &</paramtype> |
| <description> |
| <para>The Proto expression. </para> |
| </description> |
| </parameter> |
| </signature> |
| <signature> |
| <type>typename <classname>proto::result_of::child</classname>< Expr const &, N >::type</type> |
| <template> |
| <template-type-parameter name="N"/> |
| <template-type-parameter name="Expr"/> |
| </template> |
| <parameter name="expr"> |
| <paramtype>Expr const &</paramtype> |
| </parameter> |
| </signature> |
| <signature> |
| <type>typename <classname>proto::result_of::child</classname>< Expr & >::type</type> |
| <template> |
| <template-type-parameter name="Expr"/> |
| </template> |
| <parameter name="expr"> |
| <paramtype>Expr &</paramtype> |
| </parameter> |
| </signature> |
| <signature> |
| <type>typename <classname>proto::result_of::child</classname>< Expr const & >::type</type> |
| <template> |
| <template-type-parameter name="Expr"/> |
| </template> |
| <parameter name="expr"> |
| <paramtype>Expr const &</paramtype> |
| </parameter> |
| </signature> |
| <purpose>Return the <replaceable>N</replaceable><superscript>th</superscript> child of the specified Proto expression. </purpose> |
| <description> |
| <para> |
| Return the <replaceable>N</replaceable><superscript>th</superscript> child of the specified Proto expression. |
| If <computeroutput>N</computeroutput> is not specified, as in <computeroutput>proto::child(expr)</computeroutput>, |
| then <computeroutput>N</computeroutput> is assumed to be <computeroutput>mpl::long_<0></computeroutput>. |
| The child is returned by reference. |
| </para> |
| </description> |
| <requires> |
| <para> |
| <computeroutput><classname>proto::is_expr</classname><Expr>::value</computeroutput> is |
| <computeroutput>true</computeroutput>. |
| </para> |
| <para> |
| <computeroutput>N</computeroutput> is an MPL Integral Constant. |
| </para> |
| <para> |
| <computeroutput>N::value < Expr::proto_arity::value</computeroutput> |
| </para> |
| </requires> |
| <returns> |
| <para>A reference to the <replaceable>N</replaceable><superscript>th</superscript> child |
| of <computeroutput>expr</computeroutput>.</para> |
| </returns> |
| <throws> |
| <simpara>Will not throw.</simpara> |
| </throws> |
| </overloaded-function> |
| |
| <overloaded-function name="child_c"> |
| <signature> |
| <type>typename <classname>proto::result_of::child_c</classname>< Expr &, N >::type</type> |
| <template> |
| <template-nontype-parameter name="N"> |
| <type>long</type> |
| </template-nontype-parameter> |
| <template-type-parameter name="Expr"/> |
| </template> |
| <parameter name="expr"> |
| <paramtype>Expr &</paramtype> |
| </parameter> |
| </signature> |
| <signature> |
| <type>typename <classname>proto::result_of::child_c</classname>< Expr const &, N >::type</type> |
| <template> |
| <template-nontype-parameter name="N"> |
| <type>long</type> |
| </template-nontype-parameter> |
| <template-type-parameter name="Expr"/> |
| </template> |
| <parameter name="expr"> |
| <paramtype>Expr const &</paramtype> |
| </parameter> |
| </signature> |
| <purpose>Return the <replaceable>N</replaceable><superscript>th</superscript> child of the specified |
| Proto expression. </purpose> |
| <description> |
| <para> |
| Return the <replaceable>N</replaceable><superscript>th</superscript> child of the specified Proto |
| expression. The child is returned by reference. |
| </para> |
| </description> |
| <requires> |
| <para> |
| <computeroutput><classname>proto::is_expr</classname><Expr>::value</computeroutput> is |
| <computeroutput>true</computeroutput>. |
| </para> |
| <para> |
| <computeroutput>N < Expr::proto_arity::value</computeroutput> |
| </para> |
| </requires> |
| <returns> |
| <para>A reference to the <replaceable>N</replaceable><superscript>th</superscript> child |
| of <computeroutput>expr</computeroutput>.</para> |
| </returns> |
| <throws> |
| <simpara>Will not throw.</simpara> |
| </throws> |
| </overloaded-function> |
| |
| <overloaded-function name="value"> |
| <signature> |
| <type>typename <classname>proto::result_of::value</classname>< Expr & >::type</type> |
| <template> |
| <template-type-parameter name="Expr"/> |
| </template> |
| <parameter name="expr"> |
| <paramtype>Expr &</paramtype> |
| </parameter> |
| </signature> |
| <signature> |
| <type>typename <classname>proto::result_of::value</classname>< Expr const & >::type</type> |
| <template> |
| <template-type-parameter name="Expr"/> |
| </template> |
| <parameter name="expr"> |
| <paramtype>Expr const &</paramtype> |
| </parameter> |
| </signature> |
| <purpose>Return the value stored within the specified Proto terminal expression. </purpose> |
| <description> |
| <para> |
| Return the the value stored within the specified Proto terminal expression. The value is |
| returned by reference. |
| </para> |
| </description> |
| <requires> |
| <para> |
| <computeroutput>0 == Expr::proto_arity::value</computeroutput> |
| </para> |
| </requires> |
| <returns> |
| <para>A reference to the terminal's value </para> |
| </returns> |
| <throws> |
| <simpara>Will not throw.</simpara> |
| </throws> |
| </overloaded-function> |
| |
| <overloaded-function name="left"> |
| <signature> |
| <type>typename <classname>proto::result_of::left</classname>< Expr & >::type</type> |
| <template> |
| <template-type-parameter name="Expr"/> |
| </template> |
| <parameter name="expr"> |
| <paramtype>Expr &</paramtype> |
| </parameter> |
| </signature> |
| <signature> |
| <type>typename <classname>proto::result_of::left</classname>< Expr const & >::type</type> |
| <template> |
| <template-type-parameter name="Expr"/> |
| </template> |
| <parameter name="expr"> |
| <paramtype>Expr const &</paramtype> |
| </parameter> |
| </signature> |
| <purpose>Return the left child of the specified binary Proto expression. </purpose> |
| <description> |
| <para>Return the left child of the specified binary Proto expression. The child is returned by reference.</para> |
| </description> |
| <requires> |
| <para> |
| <computeroutput><classname>proto::is_expr</classname><Expr>::value</computeroutput> is |
| <computeroutput>true</computeroutput>. |
| </para> |
| <para> |
| <computeroutput>2 == Expr::proto_arity::value</computeroutput> |
| </para> |
| </requires> |
| <returns> |
| <para>A reference to the left child of <computeroutput>expr</computeroutput>. |
| </para> |
| </returns> |
| <throws> |
| <simpara>Will not throw.</simpara> |
| </throws> |
| </overloaded-function> |
| |
| <overloaded-function name="right"> |
| <signature> |
| <type>typename <classname>proto::result_of::right</classname>< Expr & >::type</type> |
| <template> |
| <template-type-parameter name="Expr"/> |
| </template> |
| <parameter name="expr"> |
| <paramtype>Expr &</paramtype> |
| <description> |
| <para>The Proto expression. </para> |
| </description> |
| </parameter> |
| </signature> |
| <signature> |
| <type>typename <classname>proto::result_of::right</classname>< Expr const & >::type</type> |
| <template> |
| <template-type-parameter name="Expr"/> |
| </template> |
| <parameter name="expr"> |
| <paramtype>Expr const &</paramtype> |
| </parameter> |
| </signature> |
| <purpose>Return the right child of the specified binary Proto expression. </purpose> |
| <description> |
| <para>Return the right child of the specified binary Proto expression. The child is returned by reference.</para> |
| </description> |
| <requires> |
| <para> |
| <computeroutput><classname>proto::is_expr</classname><Expr>::value</computeroutput> is |
| <computeroutput>true</computeroutput>. |
| </para> |
| <para> |
| <computeroutput>2 == Expr::proto_arity::value</computeroutput> |
| </para> |
| </requires> |
| <returns> |
| <para> |
| A reference to the right child of <computeroutput>expr</computeroutput>. |
| </para> |
| </returns> |
| <throws> |
| <simpara>Will not throw.</simpara> |
| </throws> |
| </overloaded-function> |
| </namespace> |
| </namespace> |
| </header> |