UNPKG

boost-react-native-bundle

Version:

Boost library as in https://sourceforge.net/projects/boost/files/boost/1.57.0/

991 lines (967 loc) 144 kB
<?xml version="1.0" encoding="utf-8"?> <!-- Copyright 2012 Eric Niebler Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) --> <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>&lt;&gt;</computeroutput> and <computeroutput><classname alt="boost::proto::arity_of">proto::arity_of</classname>&lt;&gt;</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&lt;&gt;</computeroutput> is used by the <computeroutput><classname alt="proto::when">proto::when&lt;&gt;</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&lt;&gt;</classname></computeroutput> and the later with <computeroutput><classname>proto::make&lt;&gt;</classname></computeroutput>. If <computeroutput>proto::is_callable&lt;R&gt;::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&lt;T&gt;::value</computeroutput> is computed as follows: <itemizedlist> <listitem> <para> If <computeroutput>T</computeroutput> is a template type <computeroutput>X&lt;Y<subscript>0</subscript>,...Y<subscript>n</subscript>&gt;</computeroutput>, where all <computeroutput>Y<subscript>x</subscript></computeroutput> are types for <computeroutput>x</computeroutput> in <computeroutput>[0,n]</computeroutput>, <computeroutput>proto::is_callable&lt;T&gt;::value</computeroutput> is <computeroutput>boost::is_same&lt;Y<subscript>n</subscript>, <classname>proto::callable</classname>&gt;::value</computeroutput>. </para> </listitem> <listitem> <para> If <computeroutput>T</computeroutput> is derived from <computeroutput><classname>proto::callable</classname></computeroutput>, <computeroutput>proto::is_callable&lt;T&gt;::value</computeroutput> is <computeroutput>true</computeroutput>. </para> </listitem> <listitem> <para> Otherwise, <computeroutput>proto::is_callable&lt;T&gt;::value</computeroutput> is <computeroutput>false</computeroutput>. </para> </listitem> </itemizedlist> </para> </description> <inherit><type>mpl::bool_&lt;<replaceable>true-or-false</replaceable>&gt;</type></inherit> </struct> <struct name="is_transform"> <template> <template-type-parameter name="T"/> </template> <purpose>Boolean metafunction which tells whether a type is a <conceptname>PrimitiveTransform</conceptname> or not.</purpose> <description> <para> <computeroutput>proto::is_transform&lt;&gt;</computeroutput> is used by the <computeroutput><classname alt="proto::make">proto::make&lt;&gt;</classname></computeroutput> transform to determine whether a type <computeroutput>R</computeroutput> represents a <conceptname>PrimitiveTransform</conceptname> to apply, or whether it merely represents itself. </para> <para> It is also used by the <computeroutput><classname alt="proto::call">proto::call&lt;&gt;</classname></computeroutput> transform to determine whether the function types <computeroutput>R()</computeroutput>, <computeroutput>R(A1)</computeroutput>, and <computeroutput>R(A1, A2)</computeroutput> should be passed the expression, state and data parameters (as needed). </para> <para> Unless specialized for a type <computeroutput>T</computeroutput>, <computeroutput>proto::is_transform&lt;T&gt;::value</computeroutput> is computed as follows: <itemizedlist> <listitem> <para> If <computeroutput>T</computeroutput> is a class type that inherits directly or indirectly from an instantiation of <computeroutput><classname alt="proto::transform">proto::transform&lt;&gt;</classname></computeroutput>, <computeroutput>proto::is_transform&lt;T&gt;::value</computeroutput> is <computeroutput>true</computeroutput>. </para> </listitem> <listitem> <para> Otherwise, <computeroutput>proto::is_transform&lt;T&gt;::value</computeroutput> is <computeroutput>false</computeroutput>. </para> </listitem> </itemizedlist> </para> </description> <inherit><type>mpl::bool_&lt;<replaceable>true-or-false</replaceable>&gt;</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&lt;&gt;</computeroutput> is used by the <computeroutput><classname>proto::make&lt;&gt;</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&lt;T&gt;::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&lt;&gt;</classname></computeroutput> and <computeroutput><classname>proto::basic_expr&lt;&gt;</classname></computeroutput>are aggregates. </para> </description> <inherit><type>mpl::bool_&lt;<replaceable>true-or-false</replaceable>&gt;</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>&lt; typename remove_reference&lt; T &gt;::type, Domain &gt;</type></inherit> </struct-specialization> <method-group name="public member functions"> <method name="operator()" cv="const"> <type>typename <classname>proto::result_of::as_expr</classname>&lt; T, Domain &gt;::type</type> <template> <template-type-parameter name="T"/> </template> <parameter name="t"> <paramtype>T &amp;</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>&lt;Domain&gt;(t)</computeroutput> </para> </returns> </method> <method name="operator()" cv="const"> <type>typename <classname>proto::result_of::as_expr</classname>&lt; T const, Domain &gt;::type</type> <template> <template-type-parameter name="T"/> </template> <parameter name="t"> <paramtype>T const &amp;</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>&lt; typename remove_reference&lt; T &gt;::type, Domain &gt;</type></inherit> </struct-specialization> <method-group name="public member functions"> <method name="operator()" cv="const"> <type>typename <classname>proto::result_of::as_child</classname>&lt; T, Domain &gt;::type</type> <template> <template-type-parameter name="T"/> </template> <parameter name="t"> <paramtype>T &amp;</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>&lt;Domain&gt;(t)</computeroutput> </para> </returns> </method> <method name="operator()" cv="const"> <type>typename <classname>proto::result_of::as_child</classname>&lt; T const, Domain &gt;::type</type> <template> <template-type-parameter name="T"/> </template> <parameter name="t"> <paramtype>T const &amp;</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>&lt; Expr, N &gt;</type></inherit> </struct-specialization> <method-group name="public member functions"> <method name="operator()" cv="const"> <type>typename <classname>proto::result_of::child_c</classname>&lt; Expr &amp;, N &gt;::type</type> <template> <template-type-parameter name="Expr"/> </template> <parameter name="expr"> <paramtype>Expr &amp;</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>&lt;Expr&gt;::value</computeroutput> is <computeroutput>true</computeroutput> </para> <para> <computeroutput>N &lt; Expr::proto_arity::value</computeroutput> </para> </requires> <returns> <para> <computeroutput><functionname>proto::child_c</functionname>&lt;N&gt;(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>&lt; Expr const &amp;, N &gt;::type</type> <template> <template-type-parameter name="Expr"/> </template> <parameter name="expr"> <paramtype>Expr const &amp;</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_&lt;0&gt;</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>&lt; Expr, N &gt;</type> </inherit> </struct-specialization> <method-group name="public member functions"> <method name="operator()" cv="const"> <type>typename <classname>proto::result_of::child</classname>&lt; Expr &amp;, N &gt;::type</type> <template> <template-type-parameter name="Expr"/> </template> <parameter name="expr"> <paramtype>Expr &amp;</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>&lt;Expr&gt;::value</computeroutput> is <computeroutput>true</computeroutput> </para> <para> <computeroutput>N::value &lt; Expr::proto_arity::value</computeroutput> </para> </requires> <returns> <para> <computeroutput><functionname>proto::child</functionname>&lt;N&gt;(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>&lt; Expr const &amp;, N &gt;::type</type> <template> <template-type-parameter name="Expr"/> </template> <parameter name="expr"> <paramtype>Expr const &amp;</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>&lt; Expr &gt;</type> </inherit> </struct-specialization> <method-group name="public member functions"> <method name="operator()" cv="const"> <type>typename <classname>proto::result_of::value</classname>&lt; Expr &amp; &gt;::type</type> <template> <template-type-parameter name="Expr"/> </template> <parameter name="expr"> <paramtype>Expr &amp;</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>&lt;Expr&gt;::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>&lt; Expr const &amp; &gt;::type</type> <template> <template-type-parameter name="Expr"/> </template> <parameter name="expr"> <paramtype>Expr const &amp;</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>&lt; Expr &gt;</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>&lt; Expr &amp; &gt;::type</type> <template> <template-type-parameter name="Expr"/> </template> <parameter name="expr"> <paramtype>Expr &amp;</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>&lt;Expr&gt;::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>&lt; Expr const &amp; &gt;::type</type> <template> <template-type-parameter name="Expr"/> </template> <parameter name="expr"> <paramtype>Expr const &amp;</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>&lt; Expr &gt;</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>&lt; Expr &amp; &gt;::type</type> <template> <template-type-parameter name="Expr"/> </template> <parameter name="expr"> <paramtype>Expr &amp;</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>&lt;Expr&gt;::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>&lt; Expr const &amp; &gt;::type</type> <template> <template-type-parameter name="Expr"/> </template> <parameter name="expr"> <paramtype>Expr const &amp;</paramtype> </parameter> </method> </method-group> </struct> </namespace> <struct name="terminal"> <template> <template-type-parameter name="T"/> </template> <inherit><classname>proto::transform</classname>&lt; terminal&lt;T&gt; &gt;</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>&lt; Expr, State, Data &gt;</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>&lt;Expr, proto::terminal&lt;T&gt; &gt;::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>&lt; <classname>proto::tag::terminal</classname>, <classname>proto::term</classname>&lt; T &gt; &gt;</type> </typedef> <typedef name="proto_grammar"> <type><classname>proto::basic_expr</classname>&lt; <classname>proto::tag::terminal</classname>, <classname>proto::term</classname>&lt; T &gt; &gt;</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>&lt; if_else_&lt;T, U, V&gt; &gt;</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&lt;&gt;</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>&lt;if_else_&gt;::template impl&lt;Expr, State, Data&gt;</type> </inherit> </struct> <typedef name="type"> <type><classname>proto::expr</classname>&lt; <classname>proto::tag::if_else_</classname>, <classname alt="proto::listN">proto::list3</classname>&lt; T, U, V &gt; &gt;</type> </typedef> <typedef name="proto_grammar"> <type><classname>proto::basic_expr</classname>&lt; <classname>proto::tag::if_else_</classname>, <classname alt="proto::listN">proto::list3</classname>&lt; T, U, V &gt; &gt;</type> </typedef> </struct> <struct name="unary_plus"> <template> <template-type-parameter name="T"/> </template> <inherit><classname>proto::transform</classname>&lt; unary_plus&lt;T&gt; &gt;</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&lt;&gt;</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>&lt;unary_plus&gt;::template impl&lt;Expr, State, Data&gt;</type> </inherit> </struct> <typedef name="type"> <type><classname>proto::expr</classname>&lt; <classname>proto::tag::unary_plus</classname>, <classname alt="proto::listN">proto::list1</classname>&lt; T &gt; &gt;</type> </typedef> <typedef name="proto_grammar"> <type><classname>proto::basic_expr</classname>&lt; <classname>proto::tag::unary_plus</classname>, <classname alt="proto::listN">proto::list1</classname>&lt; T &gt; &gt;</type> </typedef> </struct> <struct name="negate"> <template> <template-type-parameter name="T"/> </template> <inherit><classname>proto::transform</classname>&lt; negate&lt;T&gt; &gt;</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&lt;&gt;</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>&lt;negate&gt;::template impl&lt;Expr, State, Data&gt;</type> </inherit> </struct> <typedef name="type"> <type><classname>proto::expr</classname>&lt; <classname>proto::tag::negate</classname>, <classname alt="proto::listN">proto::list1</classname>&lt; T &gt; &gt;</type> </typedef> <typedef name="proto_grammar"> <type><classname>proto::basic_expr</classname>&lt; <classname>proto::tag::negate</classname>, <classname alt="proto::listN">proto::list1</classname>&lt; T &gt; &gt;</type> </typedef> </struct> <struct name="dereference"> <template> <template-type-parameter name="T"/> </template> <inherit><classname>proto::transform</classname>&lt; dereference&lt;T&gt; &gt;</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&lt;&gt;</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>&lt;dereference&gt;::template impl&lt;Expr, State, Data&gt;</type> </inherit> </struct> <typedef name="type"> <type><classname>proto::expr</classname>&lt; <classname>proto::tag::dereference</classname>, <classname alt="proto::listN">proto::list1</classname>&lt; T &gt; &gt;</type> </typedef> <typedef name="proto_grammar"> <type><classname>proto::basic_expr</classname>&lt; <classname>proto::tag::dereference</classname>, <classname alt="proto::listN">proto::list1</classname>&lt; T &gt; &gt;</type> </typedef> </struct> <struct name="complement"> <template> <template-type-parameter name="T"/> </template> <inherit><classname>proto::transform</classname>&lt; complement&lt;T&gt; &gt;</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&lt;&gt;</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>&lt;complement&gt;::template impl&lt;Expr, State, Data&gt;</type> </inherit> </struct> <typedef name="type"> <type><classname>proto::expr</classname>&lt; <classname>proto::tag::complement</classname>, <classname alt="proto::listN">proto::list1</classname>&lt; T &gt; &gt;</type> </typedef> <typedef name="proto_grammar"> <type><classname>proto::basic_expr</classname>&lt; <classname>proto::tag::complement</classname>, <classname alt="proto::listN">proto::list1</classname>&lt; T &gt; &gt;</type> </typedef> </struct> <struct name="address_of"> <template> <template-type-parameter name="T"/> </template> <inherit><classname>proto::transform</classname>&lt; address_of&lt;T&gt; &gt;</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&lt;&gt;</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>&lt;address_of&gt;::template impl&lt;Expr, State, Data&gt;</type> </inherit> </struct> <typedef name="type"> <type><classname>proto::expr</classname>&lt; <classname>proto::tag::address_of</classname>, <classname alt="proto::listN">proto::list1</classname>&lt; T &gt; &gt;</type> </typedef> <typedef name="proto_grammar"> <type><classname>proto::basic_expr</classname>&lt; <classname>proto::tag::address_of</classname>, <classname alt="proto::listN">proto::list1</classname>&lt; T &gt; &gt;</type> </typedef> </struct> <struct name="logical_not"> <template> <template-type-parameter name="T"/> </template> <inherit><classname>proto::transform</classname>&lt; logical_not&lt;T&gt; &gt;</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&lt;&gt;</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>&lt;logical_not&gt;::template impl&lt;Expr, State, Data&gt;</type> </inherit> </struct> <typedef name="type"> <type><classname>proto::expr</classname>&lt; <classname>proto::tag::logical_not</classname>, <classname alt="proto::listN">proto::list1</classname>&lt; T &gt; &gt;</type> </typedef> <typedef name="proto_grammar"> <type><classname>proto::basic_expr</classname>&lt; <classname>proto::tag::logical_not</classname>, <classname alt="proto::listN">proto::list1</classname>&lt; T &gt; &gt;</type> </typedef> </struct> <struct name="pre_inc"> <template> <template-type-parameter name="T"/> </template> <inherit><classname>proto::transform</classname>&lt; pre_inc&lt;T&gt; &gt;</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&lt;&gt;</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>&lt;pre_inc&gt;::template impl&lt;Expr, State, Data&gt;</type> </inherit> </struct> <typedef name="type"> <type><classname>proto::expr</classname>&lt; <classname>proto::tag::pre_inc</classname>, <classname alt="proto::listN">proto::list1</classname>&lt; T &gt; &gt;</type> </typedef> <typedef name="proto_grammar"> <type><classname>proto::basic_expr</classname>&lt; <classname>proto::tag::pre_inc</classname>, <classname alt="proto::listN">proto::list1</classname>&lt; T &gt; &gt;</type> </typedef> </struct> <struct name="pre_dec"> <template> <template-type-parameter name="T"/> </template> <inherit><classname>proto::transform</classname>&lt; pre_dec&lt;T&gt; &gt;</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&lt;&gt;</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>&lt;pre_dec&gt;::template impl&lt;Expr, State, Data&gt;</type> </inherit> </struct> <typedef name="type"> <type><classname>proto::expr</classname>&lt; <classname>proto::tag::pre_dec</classname>, <classname alt="proto::listN">proto::list1</classname>&lt; T &gt; &gt;</type> </typedef> <typedef name="proto_grammar"> <type><classname>proto::basic_expr</classname>&lt; <classname>proto::tag::pre_dec</classname>, <classname alt="proto::listN">proto::list1</classname>&lt; T &gt; &gt;</type> </typedef> </struct> <struct name="post_inc"> <template> <template-type-parameter name="T"/> </template> <inherit><classname>proto::transform</classname>&lt; post_inc&lt;T&gt; &gt;</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&lt;&gt;</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>&lt;post_inc&gt;::template impl&lt;Expr, State, Data&gt;</type> </inherit> </struct> <typedef name="type"> <type><classname>proto::expr</classname>&lt; <classname>proto::tag::post_inc</classname>, <classname alt="proto::listN">proto::list1</classname>&lt; T &gt; &gt;</type> </typedef> <typedef name="proto_grammar"> <type><classname>proto::basic_expr</classname>&lt; <classname>proto::tag::post_inc</classname>, <classname alt="proto::listN">proto::list1</classname>&lt; T &gt; &gt;</type> </typedef> </struct> <struct name="post_dec"> <template> <template-type-parameter name="T"/> </template> <inherit><classname>proto::transform</classname>&lt; post_dec&lt;T&gt; &gt;</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&lt;&gt;</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>&lt;post_dec&gt;::template impl&lt;Expr, State, Data&gt;</type> </inherit> </struct> <typedef name="type"> <type><classname>proto::expr</classname>&lt; <classname>proto::tag::post_dec</classname>, <classname alt="proto::listN">proto::list1</classname>&lt; T &gt; &gt;</type> </typedef> <typedef name="proto_grammar"> <type> <classname>proto::basic_expr</classname>&lt; <classname>proto::tag::post_dec</classname>, <classname alt="proto::listN">proto::list1</classname>&lt; T &gt; &gt; </type> </typedef> </struct> <struct name="shift_left"> <template> <template-type-parameter name="T"/> <template-type-parameter name="U"/> </template> <inherit><classname>proto::transform</classname>&lt; shift_left&lt;T, U&gt; &gt;</inherit> <purpose>A metafunction for generating left-shift expression types, a grammar element for matching left-shift expressions, and a