Boost logo

Boost-Commit :

From: eric_at_[hidden]
Date: 2008-07-19 16:32:58


Author: eric_niebler
Date: 2008-07-19 16:32:57 EDT (Sat, 19 Jul 2008)
New Revision: 47609
URL: http://svn.boost.org/trac/boost/changeset/47609

Log:
regenerate doxygen docs, fix PrimitiveTransform concept reference documentation
Text files modified:
   branches/proto/v4/libs/proto/doc/concepts/PrimitiveTransform.xml | 81 +++
   branches/proto/v4/libs/proto/doc/protodoc.xml | 839 ++++++++++++++++++++++-----------------
   2 files changed, 550 insertions(+), 370 deletions(-)

Modified: branches/proto/v4/libs/proto/doc/concepts/PrimitiveTransform.xml
==============================================================================
--- branches/proto/v4/libs/proto/doc/concepts/PrimitiveTransform.xml (original)
+++ branches/proto/v4/libs/proto/doc/concepts/PrimitiveTransform.xml 2008-07-19 16:32:57 EDT (Sat, 19 Jul 2008)
@@ -17,11 +17,17 @@
   </models-sentence>
 
   <description>
- <para>A PrimitiveTransform is class type that
- has an overloaded function call operator and
- uses a narrow subset of the TR1.ResultOf protocol
- for return type calculation. It takes three
- parameters: expression, state and data.</para>
+ <para>
+ A PrimitiveTransform is class type that
+ has a nested class template called impl that takes
+ three template parameters representing an expression
+ type, a state type and a data type. Specializations
+ of the nested impl template are ternary monomorphic
+ function objects that accept expression, state, and
+ data parameters. The PrimitiveTransform is itself a
+ PolymorphicFunctionObject that is implemented in
+ terms of the nested impl template.
+ </para>
   </description>
 
   <notation variables="fn">
@@ -49,13 +55,11 @@
   </notation>
 
   <associated-type name="result_type">
- <get-member-type name="type">
- <apply-template name="typename Fn::template result">
- <apply-function name="Fn">
- <type name="Expr"/>
- <type name="State"/>
- <type name="Data"/>
- </apply-function>
+ <get-member-type name="result_type">
+ <apply-template name="typename Fn::template impl">
+ <type name="Expr"/>
+ <type name="State"/>
+ <type name="Data"/>
       </apply-template>
     </get-member-type>
     <description>
@@ -63,11 +67,62 @@
     </description>
   </associated-type>
 
- <valid-expression name="Function Call">
+ <valid-expression name="Polymorphic Function Call 1">
     <apply-function name="fn">
       <sample-value>
         <type name="Expr" />
       </sample-value>
+ </apply-function>
+ <return-type>
+ <require-same-type testable="yes">
+ <type name="result_type"/>
+ </require-same-type>
+ </return-type>
+ <semantics>Applies the transform.</semantics>
+ </valid-expression>
+
+ <valid-expression name="Polymorphic Function Call 2">
+ <apply-function name="fn">
+ <sample-value>
+ <type name="Expr" />
+ </sample-value>
+ <sample-value>
+ <type name="State" />
+ </sample-value>
+ </apply-function>
+ <return-type>
+ <require-same-type testable="yes">
+ <type name="result_type"/>
+ </require-same-type>
+ </return-type>
+ <semantics>Applies the transform.</semantics>
+ </valid-expression>
+
+ <valid-expression name="Polymorphic Function Call 3">
+ <apply-function name="fn">
+ <sample-value>
+ <type name="Expr" />
+ </sample-value>
+ <sample-value>
+ <type name="State" />
+ </sample-value>
+ <sample-value>
+ <type name="Data" />
+ </sample-value>
+ </apply-function>
+ <return-type>
+ <require-same-type testable="yes">
+ <type name="result_type"/>
+ </require-same-type>
+ </return-type>
+ <semantics>Applies the transform.</semantics>
+ </valid-expression>
+
+ <valid-expression name="Monomorphic Function Call">
+ <apply-function name="typename Fn::template impl&lt; Expr, State, Data &gt;()">
+ <sample-value>
+ <type name="Expr" />
+ </sample-value>
       <sample-value>
         <type name="State" />
       </sample-value>

Modified: branches/proto/v4/libs/proto/doc/protodoc.xml
==============================================================================
--- branches/proto/v4/libs/proto/doc/protodoc.xml (original)
+++ branches/proto/v4/libs/proto/doc/protodoc.xml 2008-07-19 16:32:57 EDT (Sat, 19 Jul 2008)
@@ -1,7 +1,5 @@
 <?xml version="1.0" standalone="yes"?>
-<library-reference><header name="boost/proto/args.hpp"><para>Contains definition of args&lt;&gt; class template. </para><namespace name="boost"><namespace name="proto"><struct-specialization name="term_ref"><template>
- <template-type-parameter name="T"/>
- </template><specialization><template-arg>T const &amp;</template-arg></specialization><typedef name="type"><type>T</type></typedef></struct-specialization><struct name="term"><template>
+<library-reference><header name="boost/proto/args.hpp"><para>Contains definition of args&lt;&gt; class template. </para><namespace name="boost"><namespace name="proto"><struct name="term"><template>
       <template-type-parameter name="Arg0"/>
     </template><purpose>A type sequence, for use as the 2nd parameter to the <computeroutput>expr&lt;&gt;</computeroutput> class template. </purpose><description><para>A type sequence, for use as the 2nd parameter to the <computeroutput>expr&lt;&gt;</computeroutput> class template. The types in the sequence correspond to the children of a node in an expression tree. </para></description><data-member name="arity" specifiers="static"><type>const long</type></data-member><typedef name="child0"><type>Arg0</type></typedef><typedef name="child_ref0"><type><classname>term_ref</classname>&lt; Arg0 &gt;</type></typedef></struct><struct name="list1"><template>
       <template-type-parameter name="Arg0"/>
@@ -28,7 +26,13 @@
       <template-type-parameter name="Context"/>
       <template-nontype-parameter name="Arity"><type>long</type><default>Expr::proto_arity::value</default></template-nontype-parameter>
     </template><purpose>A BinaryFunction that accepts a Proto expression and a callable context and calls the context with the expression tag and children as arguments, effectively fanning the expression out. </purpose><description><para><computeroutput>callable_eval&lt;&gt;</computeroutput> requires that <computeroutput>Context</computeroutput> is a PolymorphicFunctionObject that can be invoked with <computeroutput>Expr's</computeroutput> tag and children as expressions, as follows:</para><para><programlisting> context(Expr::proto_tag(), child_c&lt;0&gt;(expr), child_c&lt;1&gt;(expr), ...)
-</programlisting> </para></description></struct><struct name="callable_context"><template>
+</programlisting> </para></description></struct><struct-specialization name="callable_eval"><template>
+ <template-type-parameter name="Expr"/>
+ <template-type-parameter name="Context"/>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>Context</template-arg><template-arg>0</template-arg></specialization><purpose>A BinaryFunction that accepts a Proto expression and a callable context and calls the context with the expression tag and children as arguments, effectively fanning the expression out. </purpose><description><para><computeroutput>callable_eval&lt;&gt;</computeroutput> requires that <computeroutput>Context</computeroutput> is a PolymorphicFunctionObject that can be invoked with <computeroutput>Expr's</computeroutput> tag and children as expressions, as follows:</para><para><programlisting> context(Expr::proto_tag(), value(expr))
+</programlisting> </para></description><typedef name="value_type"><type><classname>proto::result_of::value</classname>&lt; Expr const &amp; &gt;::type</type></typedef><typedef name="result_type"><type>boost::result_of&lt; Context(typename Expr::proto_tag, value_type)&gt;::type</type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>Expr &amp;</paramtype><description><para>The current expression </para></description></parameter><parameter name="context"><paramtype>Context &amp;</paramtype><description><para>The callable evaluation context </para></description></parameter><description><para>
+
+</para></description><returns><para><computeroutput>context(Expr::proto_tag(), value(expr))</computeroutput> </para></returns></method></method-group></struct-specialization><struct name="callable_context"><template>
       <template-type-parameter name="Context"/>
       <template-type-parameter name="DefaultCtx"><default>default_context</default></template-type-parameter>
     </template><purpose>An evaluation context adaptor that makes authoring a context a simple matter of writing function overloads, rather then writing template specializations. </purpose><description><para><computeroutput>callable_context&lt;&gt;</computeroutput> is a base class that implements the context protocol by passing fanned-out expression nodes to the derived context, making it easy to customize the handling of expression types by writing function overloads. Only those expression types needing special handling require explicit handling. All others are dispatched to a user-specified default context, <computeroutput>DefaultCtx</computeroutput>.</para><para><computeroutput>callable_context&lt;&gt;</computeroutput> is defined simply as:</para><para><programlisting> template&lt;typename Context, typename DefaultCtx = default_context&gt;
@@ -69,12 +73,6 @@
     </template><description><para>A BinaryFunction that accepts an <computeroutput>Expr</computeroutput> and a <computeroutput>Context</computeroutput>, and either fans out the expression and passes it to the context, or else hands off the expression to <computeroutput>DefaultCtx</computeroutput>.</para><para>If <computeroutput>Context</computeroutput> is a PolymorphicFunctionObject such that it can be invoked with the tag and children of <computeroutput>Expr</computeroutput>, as <computeroutput>ctx(Expr::proto_tag(), child_c&lt;0&gt;(expr), child_c&lt;1&gt;(expr)...)</computeroutput>, then <computeroutput>eval&lt;Expr, ThisContext&gt;</computeroutput> inherits from <computeroutput>callable_eval&lt;Expr, ThisContext&gt;</computeroutput>. Otherwise, <computeroutput>eval&lt;Expr, ThisContext&gt;</computeroutput> inherits from <computeroutput>DefaultCtx::eval&lt;Expr, Context&gt;</computeroutput>. </para></description></struct></struct><struct-specialization name="callable_eval"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="Context"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>Context</template-arg><template-arg>0</template-arg></specialization><purpose>A BinaryFunction that accepts a Proto expression and a callable context and calls the context with the expression tag and children as arguments, effectively fanning the expression out. </purpose><description><para><computeroutput>callable_eval&lt;&gt;</computeroutput> requires that <computeroutput>Context</computeroutput> is a PolymorphicFunctionObject that can be invoked with <computeroutput>Expr's</computeroutput> tag and children as expressions, as follows:</para><para><programlisting> context(Expr::proto_tag(), child_c\&lt;0\&gt;(expr), child_c\&lt;1\&gt;(expr), ...)
-</programlisting> </para></description><typedef name="child0"><type>proto::result_of::child_c&lt; Expr const &amp;, 0 &gt;::type</type></typedef><typedef name="result_type"><type>boost::result_of&lt; Context(typename Expr::proto_tag, child0)&gt;::type</type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>Expr &amp;</paramtype><description><para>The current expression </para></description></parameter><parameter name="context"><paramtype>Context &amp;</paramtype><description><para>The callable evaluation context </para></description></parameter><description><para>
-
-</para></description><returns><para><computeroutput>context(Expr::proto_tag(), child_c&lt;0&gt;(expr), child_c&lt;1&gt;(expr), ...)</computeroutput> </para></returns></method></method-group></struct-specialization><struct-specialization name="callable_eval"><template>
- <template-type-parameter name="Expr"/>
- <template-type-parameter name="Context"/>
     </template><specialization><template-arg>Expr</template-arg><template-arg>Context</template-arg><template-arg>1</template-arg></specialization><purpose>A BinaryFunction that accepts a Proto expression and a callable context and calls the context with the expression tag and children as arguments, effectively fanning the expression out. </purpose><description><para><computeroutput>callable_eval&lt;&gt;</computeroutput> requires that <computeroutput>Context</computeroutput> is a PolymorphicFunctionObject that can be invoked with <computeroutput>Expr's</computeroutput> tag and children as expressions, as follows:</para><para><programlisting> context(Expr::proto_tag(), child_c\&lt;0\&gt;(expr), child_c\&lt;1\&gt;(expr), ...)
 </programlisting> </para></description><typedef name="child0"><type>proto::result_of::child_c&lt; Expr const &amp;, 0 &gt;::type</type></typedef><typedef name="result_type"><type>boost::result_of&lt; Context(typename Expr::proto_tag, child0)&gt;::type</type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>Expr &amp;</paramtype><description><para>The current expression </para></description></parameter><parameter name="context"><paramtype>Context &amp;</paramtype><description><para>The callable evaluation context </para></description></parameter><description><para>
 
@@ -104,7 +102,7 @@
 
 </para></description><returns><para><computeroutput>context(Expr::proto_tag(), child_c&lt;0&gt;(expr), child_c&lt;1&gt;(expr), ...)</computeroutput> </para></returns></method></method-group></struct-specialization></namespace></namespace></namespace></header><header name="boost/proto/context/default.hpp"><namespace name="boost"><namespace name="proto"><struct name="_default"><template>
       <template-type-parameter name="Grammar"/>
- </template><inherit access="public">transform&lt; boost::proto::_default&lt; Grammar &gt; &gt;</inherit><struct name="impl"><template>
+ </template><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><struct name="impl"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
@@ -112,195 +110,199 @@
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::address_of</template-arg><template-arg>1</template-arg></specialization><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::address_of</template-arg><template-arg>1</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
+ <template-type-parameter name="Expr"/>
+ <template-type-parameter name="State"/>
+ <template-type-parameter name="Data"/>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::assign</template-arg><template-arg>2</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::assign</template-arg><template-arg>2</template-arg></specialization><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::bitwise_and</template-arg><template-arg>2</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::bitwise_and</template-arg><template-arg>2</template-arg></specialization><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::bitwise_and_assign</template-arg><template-arg>2</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::bitwise_and_assign</template-arg><template-arg>2</template-arg></specialization><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::bitwise_or</template-arg><template-arg>2</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::bitwise_or</template-arg><template-arg>2</template-arg></specialization><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::bitwise_or_assign</template-arg><template-arg>2</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::bitwise_or_assign</template-arg><template-arg>2</template-arg></specialization><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::bitwise_xor</template-arg><template-arg>2</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::bitwise_xor</template-arg><template-arg>2</template-arg></specialization><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::bitwise_xor_assign</template-arg><template-arg>2</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::bitwise_xor_assign</template-arg><template-arg>2</template-arg></specialization><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::comma</template-arg><template-arg>2</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::complement</template-arg><template-arg>1</template-arg></specialization><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::complement</template-arg><template-arg>1</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::dereference</template-arg><template-arg>1</template-arg></specialization><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::dereference</template-arg><template-arg>1</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::divides</template-arg><template-arg>2</template-arg></specialization><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::divides</template-arg><template-arg>2</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::divides_assign</template-arg><template-arg>2</template-arg></specialization><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::divides_assign</template-arg><template-arg>2</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::equal_to</template-arg><template-arg>2</template-arg></specialization><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::equal_to</template-arg><template-arg>2</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::function</template-arg><template-arg>1</template-arg></specialization><typedef name="e0"><type>result_of::child_c&lt; Expr, 0 &gt;::type</type></typedef><typedef name="r0"><type>Grammar::template <classname>impl</classname>&lt; e0, State, Data &gt;::result_type</type></typedef><typedef name="function_type"><type><emphasis>unspecified</emphasis></type></typedef><typedef name="result_type"><type>boost::result_of&lt; function_type()&gt;::type</type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><str
uct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::function</template-arg><template-arg>1</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="e0"><type>result_of::child_c&lt; Expr, 0 &gt;::type</type></typedef><typedef name="r0"><type>Grammar::template <classname>impl</classname>&lt; e0, State, Data &gt;::result_type</type></typedef><typedef name="function_type"><type><emphasis>unspecified</emphasis></type></typedef><typedef name="result_type"><type>boost::result_of&lt; function_type()&gt;::type</type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename imp
l2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::function</template-arg><template-arg>2</template-arg></specialization><typedef name="e0"><type>result_of::child_c&lt; Expr, 0 &gt;::type</type></typedef><typedef name="r0"><type>Grammar::template <classname>impl</classname>&lt; e0, State, Data &gt;::result_type</type></typedef><typedef name="e1"><type>result_of::child_c&lt; Expr, 1 &gt;::type</type></typedef><typedef name="r1"><type>Grammar::template <classname>impl</classname>&lt; e1, State, Data &gt;::result_type</type></typedef><typedef name="function_type"><type><emphasis>unspecified</emphasis></type></typedef><typedef name="result_type"><type>boost::result_of&lt; function_type(e1)&gt;::type</type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter n
ame="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::function</template-arg><template-arg>2</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="e0"><type>result_of::child_c&lt; Expr, 0 &gt;::type</type></typedef><typedef name="r0"><type>Grammar::template <classname>impl</classname>&lt; e0, State, Data &gt;::result_type</type></typedef><typedef name="e1"><type>result_of::child_c&lt; Expr, 1 &gt;::type</type></typedef><typedef name="r1"><type>Grammar::template <classname>impl</classname>&lt; e1, State, Data &gt;::result_type</type></typedef><typedef name="function_type"><type><emphasis>unspecified</emphasis></type></typedef><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"
><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group><method-group name="private member functions"><method name="invoke" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter><parameter name=""><paramtype><classname>mpl::false_</classname></paramtype></parameter><parameter name=""><paramtype><classname>mpl::false_</classname></paramtype></parameter></method><method name="invoke" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></paramete
r><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter><parameter name=""><paramtype><classname>mpl::true_</classname></paramtype></parameter><parameter name=""><paramtype><classname>mpl::false_</classname></paramtype></parameter></method><method name="invoke" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter><parameter name=""><paramtype><classname>mpl::false_</classname></paramtype></parameter><parameter name=""><paramtype><classname>mpl::true_</classname></paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::function</template-arg><template-arg>3</template-arg></specialization><typedef name="e0"><type>result_of::child_c&lt; Expr, 0 &gt;::type</type></typedef><typedef name="r0"><type>Grammar::template <classname>impl</classname>&lt; e0, State, Data &gt;::result_type</type></typedef><typedef name="e1"><type>result_of::child_c&lt; Expr, 1 &gt;::type</type></typedef><typedef name="r1"><type>Grammar::template <classname>impl</classname>&lt; e1, State, Data &gt;::result_type</type></typedef><typedef name="e2"><type>result_of::child_c&lt; Expr, 2 &gt;::type</type></typedef><typedef name="r2"><type>Grammar::template <classname>impl</classname>&lt; e2, State, Data &gt;::result_type</type></typedef><typedef name="function_type"><type><emphasis>unspecified</emphasis></type></typedef><typedef name="result_type"><type>boost::result_of&lt; function_type(e1, e2)&gt;::type</type>
</typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::function</template-arg><template-arg>3</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="e0"><type>result_of::child_c&lt; Expr, 0 &gt;::type</type></typedef><typedef name="r0"><type>Grammar::template <classname>impl</classname>&lt; e0, State, Data &gt;::result_type</type></typedef><typedef name="e1"><type>result_of::child_c&lt; Expr, 1 &gt;::type</type></typedef><typedef name="r1"><type>Grammar::template <classname>impl</classname>&lt; e1, State, Data &gt;::result_type</type></typedef><typedef name="e2"><type>result_of::child_c&lt; Expr, 2 &gt;::type</type></typedef><typedef name="r2"><type>Grammar::template <classname>impl</classname>&lt; e2, State, Data &gt;::result_type</type></typedef><typedef name="function_type"><type><emphasis>unspecified</emphasis></type></typedef><ty
pedef name="result_type"><type>boost::result_of&lt; function_type(r1, r2)&gt;::type</type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group><method-group name="private member functions"><method name="invoke" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter><parameter name=""><paramtype><classname>mpl::false_</classname></paramtype></parameter></method><method name="invoke" cv="const"><type>result_type</type><parameter name="expr"><para
mtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter><parameter name=""><paramtype><classname>mpl::true_</classname></paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::function</template-arg><template-arg>4</template-arg></specialization><typedef name="e0"><type>result_of::child_c&lt; Expr, 0 &gt;::type</type></typedef><typedef name="r0"><type>Grammar::template <classname>impl</classname>&lt; e0, State, Data &gt;::result_type</type></typedef><typedef name="e1"><type>result_of::child_c&lt; Expr, 1 &gt;::type</type></typedef><typedef name="r1"><type>Grammar::template <classname>impl</classname>&lt; e1, State, Data &gt;::result_type</type></typedef><typedef name="e2"><type>result_of::child_c&lt; Expr, 2 &gt;::type</type></typedef><typedef name="r2"><type>Grammar::template <classname>impl</classname>&lt; e2, State, Data &gt;::result_type</type></typedef><typedef name="e3"><type>result_of::child_c&lt; Expr, 3 &gt;::type</type></typedef><typedef name="r3"><type>Grammar::template <classname>impl</classname>&lt; e3, State, Data &gt;
::result_type</type></typedef><typedef name="function_type"><type><emphasis>unspecified</emphasis></type></typedef><typedef name="result_type"><type>boost::result_of&lt; function_type(e1, e2, e3)&gt;::type</type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::function</template-arg><template-arg>4</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="e0"><type>result_of::child_c&lt; Expr, 0 &gt;::type</type></typedef><typedef name="r0"><type>Grammar::template <classname>impl</classname>&lt; e0, State, Data &gt;::result_type</type></typedef><typedef name="e1"><type>result_of::child_c&lt; Expr, 1 &gt;::type</type></typedef><typedef name="r1"><type>Grammar::template <classname>impl</classname>&lt; e1, State, Data &gt;::result_type</type></typedef><typedef name="e2"><type>result_of::child_c&lt; Expr, 2 &gt;::type</type></typedef><typedef name="r2"><type>Grammar::template <classname>impl</classname>&lt; e2, State, Data &gt;::result_type</type></typedef><typedef name="e3"><type>result_of::child_c&lt; Expr, 3 &gt;::type</type></typedef><type
def name="r3"><type>Grammar::template <classname>impl</classname>&lt; e3, State, Data &gt;::result_type</type></typedef><typedef name="function_type"><type><emphasis>unspecified</emphasis></type></typedef><typedef name="result_type"><type>boost::result_of&lt; function_type(r1, r2, r3)&gt;::type</type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group><method-group name="private member functions"><method name="invoke" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data
_param</paramtype></parameter><parameter name=""><paramtype><classname>mpl::false_</classname></paramtype></parameter></method><method name="invoke" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter><parameter name=""><paramtype><classname>mpl::true_</classname></paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::function</template-arg><template-arg>5</template-arg></specialization><typedef name="e0"><type>result_of::child_c&lt; Expr, 0 &gt;::type</type></typedef><typedef name="r0"><type>Grammar::template <classname>impl</classname>&lt; e0, State, Data &gt;::result_type</type></typedef><typedef name="e1"><type>result_of::child_c&lt; Expr, 1 &gt;::type</type></typedef><typedef name="r1"><type>Grammar::template <classname>impl</classname>&lt; e1, State, Data &gt;::result_type</type></typedef><typedef name="e2"><type>result_of::child_c&lt; Expr, 2 &gt;::type</type></typedef><typedef name="r2"><type>Grammar::template <classname>impl</classname>&lt; e2, State, Data &gt;::result_type</type></typedef><typedef name="e3"><type>result_of::child_c&lt; Expr, 3 &gt;::type</type></typedef><typedef name="r3"><type>Grammar::template <classname>impl</classname>&lt; e3, State, Data &gt;
::result_type</type></typedef><typedef name="e4"><type>result_of::child_c&lt; Expr, 4 &gt;::type</type></typedef><typedef name="r4"><type>Grammar::template <classname>impl</classname>&lt; e4, State, Data &gt;::result_type</type></typedef><typedef name="function_type"><type><emphasis>unspecified</emphasis></type></typedef><typedef name="result_type"><type>boost::result_of&lt; function_type(e1, e2, e3, e4)&gt;::type</type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::function</template-arg><template-arg>5</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="e0"><type>result_of::child_c&lt; Expr, 0 &gt;::type</type></typedef><typedef name="r0"><type>Grammar::template <classname>impl</classname>&lt; e0, State, Data &gt;::result_type</type></typedef><typedef name="e1"><type>result_of::child_c&lt; Expr, 1 &gt;::type</type></typedef><typedef name="r1"><type>Grammar::template <classname>impl</classname>&lt; e1, State, Data &gt;::result_type</type></typedef><typedef name="e2"><type>result_of::child_c&lt; Expr, 2 &gt;::type</type></typedef><typedef name="r2"><type>Grammar::template <classname>impl</classname>&lt; e2, State, Data &gt;::result_type</type></typedef><typedef name="e3"><type>result_of::child_c&lt; Expr, 3 &gt;::type</type></typedef><type
def name="r3"><type>Grammar::template <classname>impl</classname>&lt; e3, State, Data &gt;::result_type</type></typedef><typedef name="e4"><type>result_of::child_c&lt; Expr, 4 &gt;::type</type></typedef><typedef name="r4"><type>Grammar::template <classname>impl</classname>&lt; e4, State, Data &gt;::result_type</type></typedef><typedef name="function_type"><type><emphasis>unspecified</emphasis></type></typedef><typedef name="result_type"><type>boost::result_of&lt; function_type(r1, r2, r3, r4)&gt;::type</type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group><method-group name="private member functions"><method name="invoke" cv="const"><type>result_type</type><parameter n
ame="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter><parameter name=""><paramtype><classname>mpl::false_</classname></paramtype></parameter></method><method name="invoke" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter><parameter name=""><paramtype><classname>mpl::true_</classname></paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::greater</template-arg><template-arg>2</template-arg></specialization><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::greater</template-arg><template-arg>2</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::greater_equal</template-arg><template-arg>2</template-arg></specialization><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::greater_equal</template-arg><template-arg>2</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::if_else_</template-arg><template-arg>3</template-arg></specialization><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::if_else_</template-arg><template-arg>3</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::less</template-arg><template-arg>2</template-arg></specialization><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::less</template-arg><template-arg>2</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::less_equal</template-arg><template-arg>2</template-arg></specialization><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::less_equal</template-arg><template-arg>2</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::logical_and</template-arg><template-arg>2</template-arg></specialization><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::logical_and</template-arg><template-arg>2</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::logical_not</template-arg><template-arg>1</template-arg></specialization><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::logical_not</template-arg><template-arg>1</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::logical_or</template-arg><template-arg>2</template-arg></specialization><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::logical_or</template-arg><template-arg>2</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::mem_ptr</template-arg><template-arg>2</template-arg></specialization><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::mem_ptr</template-arg><template-arg>2</template-arg></specialization><inherit access="public">boost::proto::_default&lt; Grammar &gt;::memfun_impl&lt; Expr, State, Data, IsMemFunCall &gt;</inherit></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::minus</template-arg><template-arg>2</template-arg></specialization><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::minus</template-arg><template-arg>2</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::minus_assign</template-arg><template-arg>2</template-arg></specialization><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::minus_assign</template-arg><template-arg>2</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::modulus</template-arg><template-arg>2</template-arg></specialization><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::modulus</template-arg><template-arg>2</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::modulus_assign</template-arg><template-arg>2</template-arg></specialization><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::modulus_assign</template-arg><template-arg>2</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::multiplies</template-arg><template-arg>2</template-arg></specialization><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::multiplies</template-arg><template-arg>2</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::multiplies_assign</template-arg><template-arg>2</template-arg></specialization><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::multiplies_assign</template-arg><template-arg>2</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::negate</template-arg><template-arg>1</template-arg></specialization><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::negate</template-arg><template-arg>1</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::not_equal_to</template-arg><template-arg>2</template-arg></specialization><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::not_equal_to</template-arg><template-arg>2</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::plus</template-arg><template-arg>2</template-arg></specialization><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::plus</template-arg><template-arg>2</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::plus_assign</template-arg><template-arg>2</template-arg></specialization><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::plus_assign</template-arg><template-arg>2</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::post_dec</template-arg><template-arg>1</template-arg></specialization><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::post_dec</template-arg><template-arg>1</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::post_inc</template-arg><template-arg>1</template-arg></specialization><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::post_inc</template-arg><template-arg>1</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::pre_dec</template-arg><template-arg>1</template-arg></specialization><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::pre_dec</template-arg><template-arg>1</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::pre_inc</template-arg><template-arg>1</template-arg></specialization><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::pre_inc</template-arg><template-arg>1</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::shift_left</template-arg><template-arg>2</template-arg></specialization><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::shift_left</template-arg><template-arg>2</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::shift_left_assign</template-arg><template-arg>2</template-arg></specialization><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::shift_left_assign</template-arg><template-arg>2</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::shift_right</template-arg><template-arg>2</template-arg></specialization><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::shift_right</template-arg><template-arg>2</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::shift_right_assign</template-arg><template-arg>2</template-arg></specialization><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::shift_right_assign</template-arg><template-arg>2</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::subscript</template-arg><template-arg>2</template-arg></specialization><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::subscript</template-arg><template-arg>2</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::terminal</template-arg><template-arg>0</template-arg></specialization><inherit access="public">boost::proto::_child_c&lt; I &gt;::impl&lt; Expr, State, Data &gt;</inherit></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::terminal</template-arg><template-arg>0</template-arg></specialization><inherit access="public">boost::proto::_value::impl&lt; Expr, State, Data &gt;</inherit></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::unary_plus</template-arg><template-arg>1</template-arg></specialization><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization></struct><struct-specialization name="is_callable"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::unary_plus</template-arg><template-arg>1</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization></struct><struct-specialization name="is_callable"><template>
       <template-type-parameter name="Grammar"/>
     </template><specialization><template-arg>_default&lt; Grammar &gt;</template-arg></specialization><inherit access="public">boost::mpl::true_</inherit></struct-specialization><namespace name="context"><struct name="default_eval"><template>
       <template-type-parameter name="Expr"/>
@@ -388,9 +390,6 @@
     </template><specialization><template-arg>Expr</template-arg><template-arg>Context</template-arg><template-arg>proto::tag::bitwise_xor</template-arg><template-arg>2</template-arg></specialization><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>Expr &amp;</paramtype></parameter><parameter name="ctx"><paramtype>Context &amp;</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="default_eval"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="Context"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>Context</template-arg><template-arg>proto::tag::mem_ptr</template-arg><template-arg>2</template-arg></specialization><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>Expr &amp;</paramtype></parameter><parameter name="ctx"><paramtype>Context &amp;</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="default_eval"><template>
- <template-type-parameter name="Expr"/>
- <template-type-parameter name="Context"/>
     </template><specialization><template-arg>Expr</template-arg><template-arg>Context</template-arg><template-arg>proto::tag::assign</template-arg><template-arg>2</template-arg></specialization><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>Expr &amp;</paramtype></parameter><parameter name="ctx"><paramtype>Context &amp;</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="default_eval"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="Context"/>
@@ -424,6 +423,9 @@
     </template><specialization><template-arg>Expr</template-arg><template-arg>Context</template-arg><template-arg>proto::tag::bitwise_xor_assign</template-arg><template-arg>2</template-arg></specialization><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>Expr &amp;</paramtype></parameter><parameter name="ctx"><paramtype>Context &amp;</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="default_eval"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="Context"/>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>Context</template-arg><template-arg>tag::mem_ptr</template-arg><template-arg>2</template-arg></specialization><inherit access="public">boost::proto::context::memfun_eval&lt; Expr, Context, IsMemFunCall &gt;</inherit></struct-specialization><struct-specialization name="default_eval"><template>
+ <template-type-parameter name="Expr"/>
+ <template-type-parameter name="Context"/>
     </template><specialization><template-arg>Expr</template-arg><template-arg>Context</template-arg><template-arg>proto::tag::terminal</template-arg><template-arg>0</template-arg></specialization><typedef name="result_type"><type><classname>proto::result_of::value</classname>&lt; Expr &amp; &gt;::type</type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>Expr &amp;</paramtype></parameter><parameter name=""><paramtype>Context &amp;</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="default_eval"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="Context"/>
@@ -445,21 +447,21 @@
     </template><specialization><template-arg>Expr</template-arg><template-arg>Context</template-arg><template-arg>proto::tag::function</template-arg><template-arg>1</template-arg></specialization><typedef name="function_type"><type><emphasis>unspecified</emphasis></type></typedef><typedef name="result_type"><type>boost::result_of&lt; function_type()&gt;::type</type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>Expr &amp;</paramtype></parameter><parameter name="context"><paramtype>Context &amp;</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="default_eval"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="Context"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>Context</template-arg><template-arg>proto::tag::function</template-arg><template-arg>2</template-arg></specialization><typedef name="function_type"><type><emphasis>unspecified</emphasis></type></typedef><typedef name="result_type"><type>boost::result_of&lt; function_type(typename <classname>proto::result_of::eval</classname>&lt; typename remove_reference&lt; typename proto::result_of::child_c&lt; Expr, 1 &gt;::type &gt;::type, Context &gt;::type)&gt;::type</type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>Expr &amp;</paramtype></parameter><parameter name="context"><paramtype>Context &amp;</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="default_eval"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>Context</template-arg><template-arg>proto::tag::function</template-arg><template-arg>2</template-arg></specialization><typedef name="function_type"><type><emphasis>unspecified</emphasis></type></typedef><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>Expr &amp;</paramtype></parameter><parameter name="context"><paramtype>Context &amp;</paramtype></parameter></method></method-group><method-group name="private member functions"><method name="invoke" cv="const"><type>result_type</type><parameter name="expr"><paramtype>Expr &amp;</paramtype></parameter><parameter name="context"><paramtype>Context &amp;</paramtype></parameter><parameter name=""><paramtype><classname>mpl::false_</classname></paramtype></parameter><parameter name=""><paramtype><classname>mpl::false_<
/classname></paramtype></parameter></method><method name="invoke" cv="const"><type>result_type</type><parameter name="expr"><paramtype>Expr &amp;</paramtype></parameter><parameter name="context"><paramtype>Context &amp;</paramtype></parameter><parameter name=""><paramtype><classname>mpl::true_</classname></paramtype></parameter><parameter name=""><paramtype><classname>mpl::false_</classname></paramtype></parameter></method><method name="invoke" cv="const"><type>result_type</type><parameter name="expr"><paramtype>Expr &amp;</paramtype></parameter><parameter name="context"><paramtype>Context &amp;</paramtype></parameter><parameter name=""><paramtype><classname>mpl::false_</classname></paramtype></parameter><parameter name=""><paramtype><classname>mpl::true_</classname></paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="default_eval"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="Context"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>Context</template-arg><template-arg>proto::tag::function</template-arg><template-arg>3</template-arg></specialization><typedef name="function_type"><type><emphasis>unspecified</emphasis></type></typedef><typedef name="result_type"><type>boost::result_of&lt; function_type(typename <classname>proto::result_of::eval</classname>&lt; typename remove_reference&lt; typename proto::result_of::child_c&lt; Expr, 1 &gt;::type &gt;::type, Context &gt;::type, typename <classname>proto::result_of::eval</classname>&lt; typename remove_reference&lt; typename proto::result_of::child_c&lt; Expr, 2 &gt;::type &gt;::type, Context &gt;::type)&gt;::type</type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>Expr &amp;</paramtype></parameter><parameter name="context"><paramtype>Context &amp;</paramtype></parameter></method></method-group></struct-special
ization><struct-specialization name="default_eval"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>Context</template-arg><template-arg>proto::tag::function</template-arg><template-arg>3</template-arg></specialization><typedef name="function_type"><type><emphasis>unspecified</emphasis></type></typedef><typedef name="result_type"><type>boost::result_of&lt; function_type(typename <classname>proto::result_of::eval</classname>&lt; typename remove_reference&lt; typename proto::result_of::child_c&lt; Expr, 1 &gt;::type &gt;::type, Context &gt;::type, typename <classname>proto::result_of::eval</classname>&lt; typename remove_reference&lt; typename proto::result_of::child_c&lt; Expr, 2 &gt;::type &gt;::type, Context &gt;::type)&gt;::type</type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>Expr &amp;</paramtype></parameter><parameter name="context"><paramtype>Context &amp;</paramtype></parameter></method></method-group><method-group na
me="private member functions"><method name="invoke" cv="const"><type>result_type</type><parameter name="expr"><paramtype>Expr &amp;</paramtype></parameter><parameter name="context"><paramtype>Context &amp;</paramtype></parameter><parameter name=""><paramtype><classname>mpl::false_</classname></paramtype></parameter></method><method name="invoke" cv="const"><type>result_type</type><parameter name="expr"><paramtype>Expr &amp;</paramtype></parameter><parameter name="context"><paramtype>Context &amp;</paramtype></parameter><parameter name=""><paramtype><classname>mpl::true_</classname></paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="default_eval"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="Context"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>Context</template-arg><template-arg>proto::tag::function</template-arg><template-arg>4</template-arg></specialization><typedef name="function_type"><type><emphasis>unspecified</emphasis></type></typedef><typedef name="result_type"><type>boost::result_of&lt; function_type(typename <classname>proto::result_of::eval</classname>&lt; typename remove_reference&lt; typename proto::result_of::child_c&lt; Expr, 1 &gt;::type &gt;::type, Context &gt;::type, typename <classname>proto::result_of::eval</classname>&lt; typename remove_reference&lt; typename proto::result_of::child_c&lt; Expr, 2 &gt;::type &gt;::type, Context &gt;::type, typename <classname>proto::result_of::eval</classname>&lt; typename remove_reference&lt; typename proto::result_of::child_c&lt; Expr, 3 &gt;::type &gt;::type, Context &gt;::type)&gt;::type</type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><pa
rameter name="expr"><paramtype>Expr &amp;</paramtype></parameter><parameter name="context"><paramtype>Context &amp;</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="default_eval"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>Context</template-arg><template-arg>proto::tag::function</template-arg><template-arg>4</template-arg></specialization><typedef name="function_type"><type><emphasis>unspecified</emphasis></type></typedef><typedef name="result_type"><type>boost::result_of&lt; function_type(typename <classname>proto::result_of::eval</classname>&lt; typename remove_reference&lt; typename proto::result_of::child_c&lt; Expr, 1 &gt;::type &gt;::type, Context &gt;::type, typename <classname>proto::result_of::eval</classname>&lt; typename remove_reference&lt; typename proto::result_of::child_c&lt; Expr, 2 &gt;::type &gt;::type, Context &gt;::type, typename <classname>proto::result_of::eval</classname>&lt; typename remove_reference&lt; typename proto::result_of::child_c&lt; Expr, 3 &gt;::type &gt;::type, Context &gt;::type)&gt;::type</type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><pa
rameter name="expr"><paramtype>Expr &amp;</paramtype></parameter><parameter name="context"><paramtype>Context &amp;</paramtype></parameter></method></method-group><method-group name="private member functions"><method name="invoke" cv="const"><type>result_type</type><parameter name="expr"><paramtype>Expr &amp;</paramtype></parameter><parameter name="context"><paramtype>Context &amp;</paramtype></parameter><parameter name=""><paramtype><classname>mpl::false_</classname></paramtype></parameter></method><method name="invoke" cv="const"><type>result_type</type><parameter name="expr"><paramtype>Expr &amp;</paramtype></parameter><parameter name="context"><paramtype>Context &amp;</paramtype></parameter><parameter name=""><paramtype><classname>mpl::true_</classname></paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="default_eval"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="Context"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>Context</template-arg><template-arg>proto::tag::function</template-arg><template-arg>5</template-arg></specialization><typedef name="function_type"><type><emphasis>unspecified</emphasis></type></typedef><typedef name="result_type"><type>boost::result_of&lt; function_type(typename <classname>proto::result_of::eval</classname>&lt; typename remove_reference&lt; typename proto::result_of::child_c&lt; Expr, 1 &gt;::type &gt;::type, Context &gt;::type, typename <classname>proto::result_of::eval</classname>&lt; typename remove_reference&lt; typename proto::result_of::child_c&lt; Expr, 2 &gt;::type &gt;::type, Context &gt;::type, typename <classname>proto::result_of::eval</classname>&lt; typename remove_reference&lt; typename proto::result_of::child_c&lt; Expr, 3 &gt;::type &gt;::type, Context &gt;::type, typename <classname>proto::result_of::eval</classname>&lt; typename remove_reference&lt; typename proto::result_of::child_c&lt; Expr, 4
 &gt;::type &gt;::type, Context &gt;::type)&gt;::type</type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>Expr &amp;</paramtype></parameter><parameter name="context"><paramtype>Context &amp;</paramtype></parameter></method></method-group></struct-specialization><struct name="default_context"><description><para>default_context </para></description><struct name="eval"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>Context</template-arg><template-arg>proto::tag::function</template-arg><template-arg>5</template-arg></specialization><typedef name="function_type"><type><emphasis>unspecified</emphasis></type></typedef><typedef name="result_type"><type>boost::result_of&lt; function_type(typename <classname>proto::result_of::eval</classname>&lt; typename remove_reference&lt; typename proto::result_of::child_c&lt; Expr, 1 &gt;::type &gt;::type, Context &gt;::type, typename <classname>proto::result_of::eval</classname>&lt; typename remove_reference&lt; typename proto::result_of::child_c&lt; Expr, 2 &gt;::type &gt;::type, Context &gt;::type, typename <classname>proto::result_of::eval</classname>&lt; typename remove_reference&lt; typename proto::result_of::child_c&lt; Expr, 3 &gt;::type &gt;::type, Context &gt;::type, typename <classname>proto::result_of::eval</classname>&lt; typename remove_reference&lt; typename proto::result_of::child_c&lt; Expr, 4
 &gt;::type &gt;::type, Context &gt;::type)&gt;::type</type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>Expr &amp;</paramtype></parameter><parameter name="context"><paramtype>Context &amp;</paramtype></parameter></method></method-group><method-group name="private member functions"><method name="invoke" cv="const"><type>result_type</type><parameter name="expr"><paramtype>Expr &amp;</paramtype></parameter><parameter name="context"><paramtype>Context &amp;</paramtype></parameter><parameter name=""><paramtype><classname>mpl::false_</classname></paramtype></parameter></method><method name="invoke" cv="const"><type>result_type</type><parameter name="expr"><paramtype>Expr &amp;</paramtype></parameter><parameter name="context"><paramtype>Context &amp;</paramtype></parameter><parameter name=""><paramtype><classname>mpl::true_</classname></paramtype></parameter></method></method-group></struct-specialization><stru
ct name="default_context"><description><para>default_context </para></description><struct name="eval"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="ThisContext"><default>default_context const</default></template-type-parameter>
     </template><inherit access="public">boost::proto::context::default_eval&lt; Expr, ThisContext &gt;</inherit><description><para>default_context::eval </para></description></struct></struct></namespace></namespace></namespace></header><header name="boost/proto/transform/default.hpp"><namespace name="boost"><namespace name="proto"><struct name="_default"><template>
       <template-type-parameter name="Grammar"/>
- </template><inherit access="public">transform&lt; boost::proto::_default&lt; Grammar &gt; &gt;</inherit><struct name="impl"><template>
+ </template><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><struct name="impl"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
@@ -467,195 +469,199 @@
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::address_of</template-arg><template-arg>1</template-arg></specialization><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::address_of</template-arg><template-arg>1</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::assign</template-arg><template-arg>2</template-arg></specialization><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::assign</template-arg><template-arg>2</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::bitwise_and</template-arg><template-arg>2</template-arg></specialization><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::bitwise_and</template-arg><template-arg>2</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::bitwise_and_assign</template-arg><template-arg>2</template-arg></specialization><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::bitwise_and_assign</template-arg><template-arg>2</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::bitwise_or</template-arg><template-arg>2</template-arg></specialization><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::bitwise_or</template-arg><template-arg>2</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::bitwise_or_assign</template-arg><template-arg>2</template-arg></specialization><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::bitwise_or_assign</template-arg><template-arg>2</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::bitwise_xor</template-arg><template-arg>2</template-arg></specialization><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::bitwise_xor</template-arg><template-arg>2</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::bitwise_xor_assign</template-arg><template-arg>2</template-arg></specialization><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::bitwise_xor_assign</template-arg><template-arg>2</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::complement</template-arg><template-arg>1</template-arg></specialization><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::comma</template-arg><template-arg>2</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::dereference</template-arg><template-arg>1</template-arg></specialization><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::complement</template-arg><template-arg>1</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::divides</template-arg><template-arg>2</template-arg></specialization><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::dereference</template-arg><template-arg>1</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::divides_assign</template-arg><template-arg>2</template-arg></specialization><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::divides</template-arg><template-arg>2</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::equal_to</template-arg><template-arg>2</template-arg></specialization><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::divides_assign</template-arg><template-arg>2</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::function</template-arg><template-arg>1</template-arg></specialization><typedef name="e0"><type>result_of::child_c&lt; Expr, 0 &gt;::type</type></typedef><typedef name="r0"><type>Grammar::template <classname>impl</classname>&lt; e0, State, Data &gt;::result_type</type></typedef><typedef name="function_type"><type><emphasis>unspecified</emphasis></type></typedef><typedef name="result_type"><type>boost::result_of&lt; function_type()&gt;::type</type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><str
uct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::equal_to</template-arg><template-arg>2</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::function</template-arg><template-arg>2</template-arg></specialization><typedef name="e0"><type>result_of::child_c&lt; Expr, 0 &gt;::type</type></typedef><typedef name="r0"><type>Grammar::template <classname>impl</classname>&lt; e0, State, Data &gt;::result_type</type></typedef><typedef name="e1"><type>result_of::child_c&lt; Expr, 1 &gt;::type</type></typedef><typedef name="r1"><type>Grammar::template <classname>impl</classname>&lt; e1, State, Data &gt;::result_type</type></typedef><typedef name="function_type"><type><emphasis>unspecified</emphasis></type></typedef><typedef name="result_type"><type>boost::result_of&lt; function_type(e1)&gt;::type</type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter n
ame="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::function</template-arg><template-arg>1</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="e0"><type>result_of::child_c&lt; Expr, 0 &gt;::type</type></typedef><typedef name="r0"><type>Grammar::template <classname>impl</classname>&lt; e0, State, Data &gt;::result_type</type></typedef><typedef name="function_type"><type><emphasis>unspecified</emphasis></type></typedef><typedef name="result_type"><type>boost::result_of&lt; function_type()&gt;::type</type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename imp
l2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::function</template-arg><template-arg>3</template-arg></specialization><typedef name="e0"><type>result_of::child_c&lt; Expr, 0 &gt;::type</type></typedef><typedef name="r0"><type>Grammar::template <classname>impl</classname>&lt; e0, State, Data &gt;::result_type</type></typedef><typedef name="e1"><type>result_of::child_c&lt; Expr, 1 &gt;::type</type></typedef><typedef name="r1"><type>Grammar::template <classname>impl</classname>&lt; e1, State, Data &gt;::result_type</type></typedef><typedef name="e2"><type>result_of::child_c&lt; Expr, 2 &gt;::type</type></typedef><typedef name="r2"><type>Grammar::template <classname>impl</classname>&lt; e2, State, Data &gt;::result_type</type></typedef><typedef name="function_type"><type><emphasis>unspecified</emphasis></type></typedef><typedef name="result_type"><type>boost::result_of&lt; function_type(e1, e2)&gt;::type</type>
</typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::function</template-arg><template-arg>2</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="e0"><type>result_of::child_c&lt; Expr, 0 &gt;::type</type></typedef><typedef name="r0"><type>Grammar::template <classname>impl</classname>&lt; e0, State, Data &gt;::result_type</type></typedef><typedef name="e1"><type>result_of::child_c&lt; Expr, 1 &gt;::type</type></typedef><typedef name="r1"><type>Grammar::template <classname>impl</classname>&lt; e1, State, Data &gt;::result_type</type></typedef><typedef name="function_type"><type><emphasis>unspecified</emphasis></type></typedef><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"
><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group><method-group name="private member functions"><method name="invoke" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter><parameter name=""><paramtype><classname>mpl::false_</classname></paramtype></parameter><parameter name=""><paramtype><classname>mpl::false_</classname></paramtype></parameter></method><method name="invoke" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></paramete
r><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter><parameter name=""><paramtype><classname>mpl::true_</classname></paramtype></parameter><parameter name=""><paramtype><classname>mpl::false_</classname></paramtype></parameter></method><method name="invoke" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter><parameter name=""><paramtype><classname>mpl::false_</classname></paramtype></parameter><parameter name=""><paramtype><classname>mpl::true_</classname></paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::function</template-arg><template-arg>4</template-arg></specialization><typedef name="e0"><type>result_of::child_c&lt; Expr, 0 &gt;::type</type></typedef><typedef name="r0"><type>Grammar::template <classname>impl</classname>&lt; e0, State, Data &gt;::result_type</type></typedef><typedef name="e1"><type>result_of::child_c&lt; Expr, 1 &gt;::type</type></typedef><typedef name="r1"><type>Grammar::template <classname>impl</classname>&lt; e1, State, Data &gt;::result_type</type></typedef><typedef name="e2"><type>result_of::child_c&lt; Expr, 2 &gt;::type</type></typedef><typedef name="r2"><type>Grammar::template <classname>impl</classname>&lt; e2, State, Data &gt;::result_type</type></typedef><typedef name="e3"><type>result_of::child_c&lt; Expr, 3 &gt;::type</type></typedef><typedef name="r3"><type>Grammar::template <classname>impl</classname>&lt; e3, State, Data &gt;
::result_type</type></typedef><typedef name="function_type"><type><emphasis>unspecified</emphasis></type></typedef><typedef name="result_type"><type>boost::result_of&lt; function_type(e1, e2, e3)&gt;::type</type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::function</template-arg><template-arg>3</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="e0"><type>result_of::child_c&lt; Expr, 0 &gt;::type</type></typedef><typedef name="r0"><type>Grammar::template <classname>impl</classname>&lt; e0, State, Data &gt;::result_type</type></typedef><typedef name="e1"><type>result_of::child_c&lt; Expr, 1 &gt;::type</type></typedef><typedef name="r1"><type>Grammar::template <classname>impl</classname>&lt; e1, State, Data &gt;::result_type</type></typedef><typedef name="e2"><type>result_of::child_c&lt; Expr, 2 &gt;::type</type></typedef><typedef name="r2"><type>Grammar::template <classname>impl</classname>&lt; e2, State, Data &gt;::result_type</type></typedef><typedef name="function_type"><type><emphasis>unspecified</emphasis></type></typedef><ty
pedef name="result_type"><type>boost::result_of&lt; function_type(r1, r2)&gt;::type</type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group><method-group name="private member functions"><method name="invoke" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter><parameter name=""><paramtype><classname>mpl::false_</classname></paramtype></parameter></method><method name="invoke" cv="const"><type>result_type</type><parameter name="expr"><para
mtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter><parameter name=""><paramtype><classname>mpl::true_</classname></paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::function</template-arg><template-arg>5</template-arg></specialization><typedef name="e0"><type>result_of::child_c&lt; Expr, 0 &gt;::type</type></typedef><typedef name="r0"><type>Grammar::template <classname>impl</classname>&lt; e0, State, Data &gt;::result_type</type></typedef><typedef name="e1"><type>result_of::child_c&lt; Expr, 1 &gt;::type</type></typedef><typedef name="r1"><type>Grammar::template <classname>impl</classname>&lt; e1, State, Data &gt;::result_type</type></typedef><typedef name="e2"><type>result_of::child_c&lt; Expr, 2 &gt;::type</type></typedef><typedef name="r2"><type>Grammar::template <classname>impl</classname>&lt; e2, State, Data &gt;::result_type</type></typedef><typedef name="e3"><type>result_of::child_c&lt; Expr, 3 &gt;::type</type></typedef><typedef name="r3"><type>Grammar::template <classname>impl</classname>&lt; e3, State, Data &gt;
::result_type</type></typedef><typedef name="e4"><type>result_of::child_c&lt; Expr, 4 &gt;::type</type></typedef><typedef name="r4"><type>Grammar::template <classname>impl</classname>&lt; e4, State, Data &gt;::result_type</type></typedef><typedef name="function_type"><type><emphasis>unspecified</emphasis></type></typedef><typedef name="result_type"><type>boost::result_of&lt; function_type(e1, e2, e3, e4)&gt;::type</type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::function</template-arg><template-arg>4</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="e0"><type>result_of::child_c&lt; Expr, 0 &gt;::type</type></typedef><typedef name="r0"><type>Grammar::template <classname>impl</classname>&lt; e0, State, Data &gt;::result_type</type></typedef><typedef name="e1"><type>result_of::child_c&lt; Expr, 1 &gt;::type</type></typedef><typedef name="r1"><type>Grammar::template <classname>impl</classname>&lt; e1, State, Data &gt;::result_type</type></typedef><typedef name="e2"><type>result_of::child_c&lt; Expr, 2 &gt;::type</type></typedef><typedef name="r2"><type>Grammar::template <classname>impl</classname>&lt; e2, State, Data &gt;::result_type</type></typedef><typedef name="e3"><type>result_of::child_c&lt; Expr, 3 &gt;::type</type></typedef><type
def name="r3"><type>Grammar::template <classname>impl</classname>&lt; e3, State, Data &gt;::result_type</type></typedef><typedef name="function_type"><type><emphasis>unspecified</emphasis></type></typedef><typedef name="result_type"><type>boost::result_of&lt; function_type(r1, r2, r3)&gt;::type</type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group><method-group name="private member functions"><method name="invoke" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data
_param</paramtype></parameter><parameter name=""><paramtype><classname>mpl::false_</classname></paramtype></parameter></method><method name="invoke" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter><parameter name=""><paramtype><classname>mpl::true_</classname></paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::greater</template-arg><template-arg>2</template-arg></specialization><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::function</template-arg><template-arg>5</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="e0"><type>result_of::child_c&lt; Expr, 0 &gt;::type</type></typedef><typedef name="r0"><type>Grammar::template <classname>impl</classname>&lt; e0, State, Data &gt;::result_type</type></typedef><typedef name="e1"><type>result_of::child_c&lt; Expr, 1 &gt;::type</type></typedef><typedef name="r1"><type>Grammar::template <classname>impl</classname>&lt; e1, State, Data &gt;::result_type</type></typedef><typedef name="e2"><type>result_of::child_c&lt; Expr, 2 &gt;::type</type></typedef><typedef name="r2"><type>Grammar::template <classname>impl</classname>&lt; e2, State, Data &gt;::result_type</type></typedef><typedef name="e3"><type>result_of::child_c&lt; Expr, 3 &gt;::type</type></typedef><type
def name="r3"><type>Grammar::template <classname>impl</classname>&lt; e3, State, Data &gt;::result_type</type></typedef><typedef name="e4"><type>result_of::child_c&lt; Expr, 4 &gt;::type</type></typedef><typedef name="r4"><type>Grammar::template <classname>impl</classname>&lt; e4, State, Data &gt;::result_type</type></typedef><typedef name="function_type"><type><emphasis>unspecified</emphasis></type></typedef><typedef name="result_type"><type>boost::result_of&lt; function_type(r1, r2, r3, r4)&gt;::type</type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group><method-group name="private member functions"><method name="invoke" cv="const"><type>result_type</type><parameter n
ame="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter><parameter name=""><paramtype><classname>mpl::false_</classname></paramtype></parameter></method><method name="invoke" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter><parameter name=""><paramtype><classname>mpl::true_</classname></paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::greater_equal</template-arg><template-arg>2</template-arg></specialization><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::greater</template-arg><template-arg>2</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::if_else_</template-arg><template-arg>3</template-arg></specialization><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::greater_equal</template-arg><template-arg>2</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::less</template-arg><template-arg>2</template-arg></specialization><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::if_else_</template-arg><template-arg>3</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::less_equal</template-arg><template-arg>2</template-arg></specialization><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::less</template-arg><template-arg>2</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::logical_and</template-arg><template-arg>2</template-arg></specialization><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::less_equal</template-arg><template-arg>2</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::logical_not</template-arg><template-arg>1</template-arg></specialization><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::logical_and</template-arg><template-arg>2</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::logical_or</template-arg><template-arg>2</template-arg></specialization><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::logical_not</template-arg><template-arg>1</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::mem_ptr</template-arg><template-arg>2</template-arg></specialization><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::logical_or</template-arg><template-arg>2</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::minus</template-arg><template-arg>2</template-arg></specialization><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::mem_ptr</template-arg><template-arg>2</template-arg></specialization><inherit access="public">boost::proto::_default&lt; Grammar &gt;::memfun_impl&lt; Expr, State, Data, IsMemFunCall &gt;</inherit></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::minus_assign</template-arg><template-arg>2</template-arg></specialization><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::minus</template-arg><template-arg>2</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::modulus</template-arg><template-arg>2</template-arg></specialization><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::minus_assign</template-arg><template-arg>2</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::modulus_assign</template-arg><template-arg>2</template-arg></specialization><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::modulus</template-arg><template-arg>2</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::multiplies</template-arg><template-arg>2</template-arg></specialization><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::modulus_assign</template-arg><template-arg>2</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::multiplies_assign</template-arg><template-arg>2</template-arg></specialization><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::multiplies</template-arg><template-arg>2</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::negate</template-arg><template-arg>1</template-arg></specialization><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::multiplies_assign</template-arg><template-arg>2</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::not_equal_to</template-arg><template-arg>2</template-arg></specialization><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::negate</template-arg><template-arg>1</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::plus</template-arg><template-arg>2</template-arg></specialization><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::not_equal_to</template-arg><template-arg>2</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::plus_assign</template-arg><template-arg>2</template-arg></specialization><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::plus</template-arg><template-arg>2</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::post_dec</template-arg><template-arg>1</template-arg></specialization><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::plus_assign</template-arg><template-arg>2</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::post_inc</template-arg><template-arg>1</template-arg></specialization><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::post_dec</template-arg><template-arg>1</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::pre_dec</template-arg><template-arg>1</template-arg></specialization><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::post_inc</template-arg><template-arg>1</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::pre_inc</template-arg><template-arg>1</template-arg></specialization><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::pre_dec</template-arg><template-arg>1</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::shift_left</template-arg><template-arg>2</template-arg></specialization><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::pre_inc</template-arg><template-arg>1</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::shift_left_assign</template-arg><template-arg>2</template-arg></specialization><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::shift_left</template-arg><template-arg>2</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::shift_right</template-arg><template-arg>2</template-arg></specialization><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::shift_left_assign</template-arg><template-arg>2</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::shift_right_assign</template-arg><template-arg>2</template-arg></specialization><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::shift_right</template-arg><template-arg>2</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::subscript</template-arg><template-arg>2</template-arg></specialization><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::shift_right_assign</template-arg><template-arg>2</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::terminal</template-arg><template-arg>0</template-arg></specialization><inherit access="public">boost::proto::_child_c&lt; I &gt;::impl&lt; Expr, State, Data &gt;</inherit></struct-specialization><struct-specialization name="impl2"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::subscript</template-arg><template-arg>2</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::unary_plus</template-arg><template-arg>1</template-arg></specialization><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization></struct><struct-specialization name="is_callable"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::terminal</template-arg><template-arg>0</template-arg></specialization><inherit access="public">boost::proto::_value::impl&lt; Expr, State, Data &gt;</inherit></struct-specialization><struct-specialization name="impl2"><template>
+ <template-type-parameter name="Expr"/>
+ <template-type-parameter name="State"/>
+ <template-type-parameter name="Data"/>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>tag::unary_plus</template-arg><template-arg>1</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization></struct><struct-specialization name="is_callable"><template>
       <template-type-parameter name="Grammar"/>
     </template><specialization><template-arg>_default&lt; Grammar &gt;</template-arg></specialization><inherit access="public">boost::mpl::true_</inherit></struct-specialization></namespace></namespace></header><header name="boost/proto/context/null.hpp"><para>Definintion of null_context&lt;&gt;, an evaluation context for proto::eval() that simply evaluates each child expression, doesn't combine the results at all, and returns void. </para><namespace name="boost"><namespace name="proto"><namespace name="context"><struct name="null_eval"><template>
       <template-type-parameter name="Expr"/>
@@ -816,15 +822,15 @@
           <template-type-parameter name="A"/>
         </template><parameter name="a"><paramtype>A &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></copy-assignment><copy-assignment><template>
           <template-type-parameter name="A"/>
- </template><parameter name="a"><paramtype>A 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></copy-assignment><method-group name="public static functions"><method name="make" cv=""><type>static expr</type><template>
+ </template><parameter name="a"><paramtype>A 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></copy-assignment><method-group name="public static functions"><method name="make" cv=""><type>static expr const</type><template>
           <template-type-parameter name="A0"/>
         </template><parameter name="a0"><paramtype>A0 const &amp;</paramtype></parameter><description><para>
-</para></description><returns><para>A new <computeroutput>expr&lt;&gt;</computeroutput> object initialized with the specified arguments. </para></returns></method><method name="make" cv=""><type>static expr</type><template>
+</para></description><returns><para>A new <computeroutput>expr&lt;&gt;</computeroutput> object initialized with the specified arguments. </para></returns></method><method name="make" cv=""><type>static expr const</type><template>
           <template-type-parameter name="A0"/>
- </template><parameter name="a0"><paramtype>A0 &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 name="make" cv=""><type>static expr</type><template>
+ </template><parameter name="a0"><paramtype>A0 &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 name="make" cv=""><type>static expr const</type><template>
           <template-type-parameter name="A0"/>
           <template-nontype-parameter name="N"><type>std::size_t</type></template-nontype-parameter>
- </template><parameter name="a0"><paramtype>A0 &amp;</paramtype></parameter><parameter name=""><paramtype><emphasis>unspecified</emphasis></paramtype><default>0</default></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 name="make" cv=""><type>static expr</type><template>
+ </template><parameter name="a0"><paramtype>A0 &amp;</paramtype></parameter><parameter name=""><paramtype><emphasis>unspecified</emphasis></paramtype><default>0</default></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 name="make" cv=""><type>static expr const</type><template>
           <template-type-parameter name="A0"/>
           <template-nontype-parameter name="N"><type>std::size_t</type></template-nontype-parameter>
         </template><parameter name="a0"><paramtype>A0 const &amp;</paramtype></parameter><parameter name=""><paramtype><emphasis>unspecified</emphasis></paramtype><default>0</default></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-specialization><struct-specialization name="expr"><template>
@@ -862,7 +868,7 @@
 
 </para></description><returns><para>A new <computeroutput>expr&lt;&gt;</computeroutput> node representing an assignment of <computeroutput>a</computeroutput> to <computeroutput>*this</computeroutput>. </para></returns></copy-assignment><copy-assignment><template>
           <template-type-parameter name="A"/>
- </template><parameter name="a"><paramtype>A 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></copy-assignment><method-group name="public static functions"><method name="make" cv=""><type>static expr</type><template>
+ </template><parameter name="a"><paramtype>A 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></copy-assignment><method-group name="public static functions"><method name="make" cv=""><type>static expr const</type><template>
           <template-type-parameter name="A0"/>
         </template><parameter name="a0"><paramtype>A0 const &amp;</paramtype></parameter><description><para>
 </para></description><returns><para>A new <computeroutput>expr&lt;&gt;</computeroutput> object initialized with the specified arguments. </para></returns></method></method-group></struct-specialization><struct-specialization name="expr"><template>
@@ -898,7 +904,7 @@
 
 </para></description><returns><para>A new <computeroutput>expr&lt;&gt;</computeroutput> node representing an assignment of <computeroutput>a</computeroutput> to <computeroutput>*this</computeroutput>. </para></returns></copy-assignment><copy-assignment><template>
           <template-type-parameter name="A"/>
- </template><parameter name="a"><paramtype>A 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></copy-assignment><method-group name="public static functions"><method name="make" cv=""><type>static expr</type><template>
+ </template><parameter name="a"><paramtype>A 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></copy-assignment><method-group name="public static functions"><method name="make" cv=""><type>static expr const</type><template>
           <template-type-parameter name="A0"/>
           <template-type-parameter name="A1"/>
         </template><parameter name="a0"><paramtype>A0 const &amp;</paramtype></parameter><parameter name="a1"><paramtype>A1 const &amp;</paramtype></parameter><description><para>
@@ -935,7 +941,7 @@
 
 </para></description><returns><para>A new <computeroutput>expr&lt;&gt;</computeroutput> node representing an assignment of <computeroutput>a</computeroutput> to <computeroutput>*this</computeroutput>. </para></returns></copy-assignment><copy-assignment><template>
           <template-type-parameter name="A"/>
- </template><parameter name="a"><paramtype>A 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></copy-assignment><method-group name="public static functions"><method name="make" cv=""><type>static expr</type><template>
+ </template><parameter name="a"><paramtype>A 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></copy-assignment><method-group name="public static functions"><method name="make" cv=""><type>static expr const</type><template>
           <template-type-parameter name="A0"/>
           <template-type-parameter name="A1"/>
           <template-type-parameter name="A2"/>
@@ -973,7 +979,7 @@
 
 </para></description><returns><para>A new <computeroutput>expr&lt;&gt;</computeroutput> node representing an assignment of <computeroutput>a</computeroutput> to <computeroutput>*this</computeroutput>. </para></returns></copy-assignment><copy-assignment><template>
           <template-type-parameter name="A"/>
- </template><parameter name="a"><paramtype>A 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></copy-assignment><method-group name="public static functions"><method name="make" cv=""><type>static expr</type><template>
+ </template><parameter name="a"><paramtype>A 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></copy-assignment><method-group name="public static functions"><method name="make" cv=""><type>static expr const</type><template>
           <template-type-parameter name="A0"/>
           <template-type-parameter name="A1"/>
           <template-type-parameter name="A2"/>
@@ -1012,14 +1018,16 @@
 
 </para></description><returns><para>A new <computeroutput>expr&lt;&gt;</computeroutput> node representing an assignment of <computeroutput>a</computeroutput> to <computeroutput>*this</computeroutput>. </para></returns></copy-assignment><copy-assignment><template>
           <template-type-parameter name="A"/>
- </template><parameter name="a"><paramtype>A 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></copy-assignment><method-group name="public static functions"><method name="make" cv=""><type>static expr</type><template>
+ </template><parameter name="a"><paramtype>A 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></copy-assignment><method-group name="public static functions"><method name="make" cv=""><type>static expr const</type><template>
           <template-type-parameter name="A0"/>
           <template-type-parameter name="A1"/>
           <template-type-parameter name="A2"/>
           <template-type-parameter name="A3"/>
           <template-type-parameter name="A4"/>
         </template><parameter name="a0"><paramtype>A0 const &amp;</paramtype></parameter><parameter name="a1"><paramtype>A1 const &amp;</paramtype></parameter><parameter name="a2"><paramtype>A2 const &amp;</paramtype></parameter><parameter name="a3"><paramtype>A3 const &amp;</paramtype></parameter><parameter name="a4"><paramtype>A4 const &amp;</paramtype></parameter><description><para>
-</para></description><returns><para>A new <computeroutput>expr&lt;&gt;</computeroutput> object initialized with the specified arguments. </para></returns></method></method-group></struct-specialization><namespace name="result_of"><struct name="funop0"><template>
+</para></description><returns><para>A new <computeroutput>expr&lt;&gt;</computeroutput> object initialized with the specified arguments. </para></returns></method></method-group></struct-specialization><struct name="unexpr"><template>
+ <template-type-parameter name="Expr"/>
+ </template><purpose>Lets you inherit the interface of an expression while hiding from Proto the fact that the type is a Proto expression. </purpose><typedef name="proto_is_expr_"><type>int</type></typedef><method-group name="public member functions"/><constructor><parameter name="expr"><paramtype>Expr const &amp;</paramtype></parameter></constructor></struct><namespace name="result_of"><struct name="funop0"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="Domain"/>
     </template><purpose>A helper metafunction for computing the return type of <computeroutput>proto::expr&lt;&gt;operator()</computeroutput>. </purpose><typedef name="type"><type>proto::expr&lt; <classname>tag::function</classname>, <classname>list1</classname>&lt; Expr &amp; &gt;&gt;</type></typedef><method-group name="public static functions"><method name="call" cv=""><type>static type const</type><parameter name="expr"><paramtype>Expr &amp;</paramtype></parameter></method></method-group></struct><struct-specialization name="funop"><template>
@@ -1124,13 +1132,13 @@
       <template-type-parameter name="Tag"><default>typename Expr::proto_tag</default></template-type-parameter>
     </template><purpose>extends&lt;&gt; class template for adding behaviors to a Proto expression template </purpose><struct name="result"><template>
       <template-type-parameter name="Sig"/>
- </template><typedef name="type"><type>boost::result_of&lt; proto_domain(typename boost::proto::result_of::funop&lt; Sig, proto_derived_expr, proto_domain &gt;::type) &gt;::type</type></typedef></struct><data-member name="expr"><type>Expr</type></data-member><typedef name="proto_base_expr"><type>Expr::proto_base_expr</type></typedef><typedef name="proto_domain"><type>Domain</type></typedef><typedef name="proto_derived_expr"><type>Derived</type></typedef><typedef name="proto_tag"><type>proto_base_expr::proto_tag</type></typedef><typedef name="proto_args"><type>proto_base_expr::proto_args</type></typedef><typedef name="proto_arity"><type>proto_base_expr::proto_arity</type></typedef><typedef name="proto_is_expr_"><type>void</type></typedef><typedef name="fusion_tag"><type>boost::proto::tag::proto_expr</type></typedef><typedef name="proto_child0"><type>proto_base_expr::proto_child0</type></typedef><typedef name="proto_child1"><type>proto_base_expr::proto_child1</type></typedef><typedef name="proto_child2"><t
ype>proto_base_expr::proto_child2</type></typedef><typedef name="proto_child3"><type>proto_base_expr::proto_child3</type></typedef><typedef name="proto_child4"><type>proto_base_expr::proto_child4</type></typedef><method-group name="public member functions"><method name="proto_base" cv=""><type>proto_base_expr &amp;</type></method><method name="proto_base" cv="const"><type>proto_base_expr const &amp;</type></method></method-group><constructor/><constructor><parameter name="that"><paramtype><classname>extends</classname> const &amp;</paramtype></parameter></constructor><constructor><parameter name="expr_"><paramtype>Expr const &amp;</paramtype></parameter></constructor><method-group name="public static functions"><method name="make" cv=""><type>static proto_derived_expr const</type><parameter name="expr"><paramtype>Expr const &amp;</paramtype></parameter></method></method-group></struct><struct-specialization name="extends"><template>
+ </template><typedef name="type"><type>boost::result_of&lt; proto_domain(typename boost::proto::result_of::funop&lt; Sig, proto_derived_expr, proto_domain &gt;::type) &gt;::type</type></typedef></struct><data-member name="proto_expr_"><type>Expr</type></data-member><typedef name="proto_base_expr"><type>Expr::proto_base_expr</type></typedef><typedef name="proto_domain"><type>Domain</type></typedef><typedef name="proto_derived_expr"><type>Derived</type></typedef><typedef name="proto_tag"><type>proto_base_expr::proto_tag</type></typedef><typedef name="proto_args"><type>proto_base_expr::proto_args</type></typedef><typedef name="proto_arity"><type>proto_base_expr::proto_arity</type></typedef><typedef name="proto_address_of_hack_type_"><type>proto_base_expr::address_of_hack_type_</type></typedef><typedef name="proto_is_expr_"><type>void</type></typedef><typedef name="fusion_tag"><type>boost::proto::tag::proto_expr</type></typedef><typedef name="proto_child0"><type>proto_base_expr::proto_child0</type></typedef>
<typedef name="proto_child_ref0"><type>proto_base_expr::proto_child_ref0</type></typedef><typedef name="proto_child1"><type>proto_base_expr::proto_child1</type></typedef><typedef name="proto_child_ref1"><type>proto_base_expr::proto_child_ref1</type></typedef><typedef name="proto_child2"><type>proto_base_expr::proto_child2</type></typedef><typedef name="proto_child_ref2"><type>proto_base_expr::proto_child_ref2</type></typedef><typedef name="proto_child3"><type>proto_base_expr::proto_child3</type></typedef><typedef name="proto_child_ref3"><type>proto_base_expr::proto_child_ref3</type></typedef><typedef name="proto_child4"><type>proto_base_expr::proto_child4</type></typedef><typedef name="proto_child_ref4"><type>proto_base_expr::proto_child_ref4</type></typedef><method-group name="public member functions"><method name="proto_base" cv=""><type>proto_base_expr &amp;</type></method><method name="proto_base" cv="const"><type>proto_base_expr const &amp;</type></method><method name="conversion-operator" cv="const"><t
ype>proto_address_of_hack_type_</type></method></method-group><constructor/><constructor><parameter name="that"><paramtype><classname>extends</classname> const &amp;</paramtype></parameter></constructor><constructor><parameter name="expr_"><paramtype>Expr const &amp;</paramtype></parameter></constructor><method-group name="public static functions"><method name="make" cv=""><type>static proto_derived_expr const</type><parameter name="expr"><paramtype>Expr const &amp;</paramtype></parameter></method></method-group></struct><struct-specialization name="extends"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="Derived"/>
       <template-type-parameter name="Domain"/>
     </template><specialization><template-arg>Expr</template-arg><template-arg>Derived</template-arg><template-arg>Domain</template-arg><template-arg>tag::terminal</template-arg></specialization><purpose>extends&lt;&gt; class template for adding behaviors to a Proto expression template </purpose><struct name="result"><template>
       <template-type-parameter name="Sig"/>
- </template><typedef name="type"><type>boost::result_of&lt; proto_domain(typename boost::proto::result_of::funop&lt; Sig, proto_derived_expr, proto_domain &gt;::type) &gt;::type</type></typedef></struct><data-member name="expr"><type>Expr</type></data-member><typedef name="proto_base_expr"><type>Expr::proto_base_expr</type></typedef><typedef name="proto_domain"><type>Domain</type></typedef><typedef name="proto_derived_expr"><type>Derived</type></typedef><typedef name="proto_tag"><type>proto_base_expr::proto_tag</type></typedef><typedef name="proto_args"><type>proto_base_expr::proto_args</type></typedef><typedef name="proto_arity"><type>proto_base_expr::proto_arity</type></typedef><typedef name="proto_is_expr_"><type>void</type></typedef><typedef name="fusion_tag"><type>boost::proto::tag::proto_expr</type></typedef><typedef name="proto_child0"><type>proto_base_expr::proto_child0</type></typedef><typedef name="proto_child1"><type>proto_base_expr::proto_child1</type></typedef><typedef name="proto_child2"><t
ype>proto_base_expr::proto_child2</type></typedef><typedef name="proto_child3"><type>proto_base_expr::proto_child3</type></typedef><typedef name="proto_child4"><type>proto_base_expr::proto_child4</type></typedef><method-group name="public member functions"><method name="extends" cv=""><type/></method><method name="extends" cv=""><type/><parameter name="that"><paramtype><classname>extends</classname> const &amp;</paramtype></parameter></method><method name="extends" cv=""><type/><parameter name="expr_"><paramtype>Expr const &amp;</paramtype></parameter></method><method name="proto_base" cv=""><type>proto_base_expr &amp;</type></method><method name="proto_base" cv="const"><type>proto_base_expr const &amp;</type></method></method-group><method-group name="public static functions"><method name="make" cv=""><type>static proto_derived_expr const</type><parameter name="expr"><paramtype>Expr const &amp;</paramtype></parameter></method></method-group></struct-specialization></namespace></namespace></header><header na
me="boost/proto/fusion.hpp"><para>Make any Proto expression a valid Fusion sequence </para><namespace name="boost"><namespace name="proto"><namespace name="functional"><struct name="flatten"><purpose>A PolymorphicFunctionObject type that returns a "flattened" view of a Proto expression tree. </purpose><description><para>A PolymorphicFunctionObject type that returns a "flattened" view of a Proto expression tree. For a tree with a top-most node tag of type <computeroutput>T</computeroutput>, the elements of the flattened sequence are determined by recursing into each child node with the same tag type and returning those nodes of different type. So for instance, the Proto expression tree corresponding to the expression <computeroutput>a | b | c</computeroutput> has a flattened view with elements [a, b, c], even though the tree is grouped as <computeroutput>((a | b) | c)</computeroutput>. </para></description><struct-specialization name="result"><template>
+ </template><typedef name="type"><type>boost::result_of&lt; proto_domain(typename boost::proto::result_of::funop&lt; Sig, proto_derived_expr, proto_domain &gt;::type) &gt;::type</type></typedef></struct><data-member name="proto_expr_"><type>Expr</type></data-member><typedef name="proto_base_expr"><type>Expr::proto_base_expr</type></typedef><typedef name="proto_domain"><type>Domain</type></typedef><typedef name="proto_derived_expr"><type>Derived</type></typedef><typedef name="proto_tag"><type>proto_base_expr::proto_tag</type></typedef><typedef name="proto_args"><type>proto_base_expr::proto_args</type></typedef><typedef name="proto_arity"><type>proto_base_expr::proto_arity</type></typedef><typedef name="proto_address_of_hack_type_"><type>proto_base_expr::address_of_hack_type_</type></typedef><typedef name="proto_is_expr_"><type>void</type></typedef><typedef name="fusion_tag"><type>boost::proto::tag::proto_expr</type></typedef><typedef name="proto_child0"><type>proto_base_expr::proto_child0</type></typedef>
<typedef name="proto_child_ref0"><type>proto_base_expr::proto_child_ref0</type></typedef><typedef name="proto_child1"><type>proto_base_expr::proto_child1</type></typedef><typedef name="proto_child_ref1"><type>proto_base_expr::proto_child_ref1</type></typedef><typedef name="proto_child2"><type>proto_base_expr::proto_child2</type></typedef><typedef name="proto_child_ref2"><type>proto_base_expr::proto_child_ref2</type></typedef><typedef name="proto_child3"><type>proto_base_expr::proto_child3</type></typedef><typedef name="proto_child_ref3"><type>proto_base_expr::proto_child_ref3</type></typedef><typedef name="proto_child4"><type>proto_base_expr::proto_child4</type></typedef><typedef name="proto_child_ref4"><type>proto_base_expr::proto_child_ref4</type></typedef><method-group name="public member functions"><method name="extends" cv=""><type/></method><method name="extends" cv=""><type/><parameter name="that"><paramtype><classname>extends</classname> const &amp;</paramtype></parameter></method><method name="exten
ds" cv=""><type/><parameter name="expr_"><paramtype>Expr const &amp;</paramtype></parameter></method><method name="proto_base" cv=""><type>proto_base_expr &amp;</type></method><method name="proto_base" cv="const"><type>proto_base_expr const &amp;</type></method><method name="conversion-operator" cv="const"><type>proto_address_of_hack_type_</type></method></method-group><method-group name="public static functions"><method name="make" cv=""><type>static proto_derived_expr const</type><parameter name="expr"><paramtype>Expr const &amp;</paramtype></parameter></method></method-group></struct-specialization></namespace></namespace></header><header name="boost/proto/fusion.hpp"><para>Make any Proto expression a valid Fusion sequence </para><namespace name="boost"><namespace name="proto"><namespace name="functional"><struct name="flatten"><purpose>A PolymorphicFunctionObject type that returns a "flattened" view of a Proto expression tree. </purpose><description><para>A PolymorphicFunctionObject type that returns a "
flattened" view of a Proto expression tree. For a tree with a top-most node tag of type <computeroutput>T</computeroutput>, the elements of the flattened sequence are determined by recursing into each child node with the same tag type and returning those nodes of different type. So for instance, the Proto expression tree corresponding to the expression <computeroutput>a | b | c</computeroutput> has a flattened view with elements [a, b, c], even though the tree is grouped as <computeroutput>((a | b) | c)</computeroutput>. </para></description><struct-specialization name="result"><template>
       <template-type-parameter name="This"/>
       <template-type-parameter name="Expr"/>
     </template><specialization><template-arg>This(Expr)</template-arg></specialization><typedef name="type"><type><emphasis>unspecified</emphasis></type></typedef></struct-specialization><typedef name="proto_is_callable_"><type>void</type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type><emphasis>unspecified</emphasis></type><template>
@@ -1145,12 +1153,16 @@
       <template-type-parameter name="Expr"/>
     </template><specialization><template-arg>This(Expr)</template-arg></specialization><typedef name="type"><type>fusion::result_of::reverse&lt; typename boost::remove_reference&lt; Expr &gt;::type const &gt;::type</type></typedef></struct-specialization><typedef name="proto_is_callable_"><type>void</type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>fusion::result_of::reverse&lt; Expr const &gt;::type</type><template>
           <template-type-parameter name="Expr"/>
- </template><parameter name="expr"><paramtype>Expr const &amp;</paramtype></parameter></method></method-group></struct></namespace><function name="flatten"><type><emphasis>unspecified</emphasis></type><template>
+ </template><parameter name="expr"><paramtype>Expr const &amp;</paramtype></parameter></method></method-group></struct></namespace><namespace name="result_of"><struct name="flatten"><template>
+ <template-type-parameter name="Expr"/>
+ </template><typedef name="type"><type><emphasis>unspecified</emphasis></type></typedef></struct><struct-specialization name="flatten"><template>
+ <template-type-parameter name="Expr"/>
+ </template><specialization><template-arg>Expr &amp;</template-arg></specialization><typedef name="type"><type><emphasis>unspecified</emphasis></type></typedef></struct-specialization></namespace><function name="flatten"><type><emphasis>unspecified</emphasis></type><template>
           <template-type-parameter name="Expr"/>
         </template><parameter name="expr"><paramtype>Expr const &amp;</paramtype></parameter><purpose>A function that returns a "flattened" view of a Proto expression tree. </purpose><description><para>For a tree with a top-most node tag of type <computeroutput>T</computeroutput>, the elements of the flattened sequence are determined by recursing into each child node with the same tag type and returning those nodes of different type. So for instance, the Proto expression tree corresponding to the expression <computeroutput>a | b | c</computeroutput> has a flattened view with elements [a, b, c], even though the tree is grouped as <computeroutput>((a | b) | c)</computeroutput>. </para></description></function></namespace></namespace></header><header name="boost/proto/generate.hpp"><para>Contains definition of generate&lt;&gt; class template, which end users can specialize for generating domain-specific expression wrappers. </para><namespace name="boost"><namespace name="proto"><struct name="default_generator"
><purpose>A simple generator that passes an expression through unchanged. </purpose><description><para>Generators are intended for use as the first template parameter to the <computeroutput>domain&lt;&gt;</computeroutput> class template and control if and how expressions within that domain are to be customized. The <computeroutput>default_generator</computeroutput> makes no modifications to the expressions passed to it. </para></description><struct-specialization name="result"><template>
       <template-type-parameter name="This"/>
       <template-type-parameter name="Expr"/>
- </template><specialization><template-arg>This(Expr)</template-arg></specialization><typedef name="type"><type>Expr</type></typedef></struct-specialization><method-group name="public member functions"><method name="operator()" cv="const"><type>Expr const &amp;</type><template>
+ </template><specialization><template-arg>This(Expr)</template-arg></specialization><typedef name="type"><type>Expr</type></typedef></struct-specialization><typedef name="proto_is_callable_"><type>void</type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>Expr const &amp;</type><template>
           <template-type-parameter name="Expr"/>
         </template><parameter name="expr"><paramtype>Expr const &amp;</paramtype><description><para>A Proto expression </para></description></parameter><description><para>
 
@@ -1159,7 +1171,13 @@
     </template><purpose>A generator that wraps expressions passed to it in the specified extension wrapper. </purpose><description><para>Generators are intended for use as the first template parameter to the <computeroutput>domain&lt;&gt;</computeroutput> class template and control if and how expressions within that domain are to be customized. <computeroutput>generator&lt;&gt;</computeroutput> wraps each expression passed to it in the <computeroutput>Extends&lt;&gt;</computeroutput> wrapper. </para></description><struct-specialization name="result"><template>
       <template-type-parameter name="This"/>
       <template-type-parameter name="Expr"/>
- </template><specialization><template-arg>This(Expr)</template-arg></specialization><typedef name="type"><type>Extends&lt; Expr &gt;</type></typedef></struct-specialization><method-group name="public member functions"><method name="operator()" cv="const"><type>Extends&lt; Expr &gt;</type><template>
+ </template><specialization><template-arg>This(Expr &amp;)</template-arg></specialization><typedef name="type"><type>Extends&lt; Expr &gt;</type></typedef></struct-specialization><struct-specialization name="result"><template>
+ <template-type-parameter name="This"/>
+ <template-type-parameter name="Expr"/>
+ </template><specialization><template-arg>This(Expr const &amp;)</template-arg></specialization><typedef name="type"><type>Extends&lt; Expr &gt;</type></typedef></struct-specialization><struct-specialization name="result"><template>
+ <template-type-parameter name="This"/>
+ <template-type-parameter name="Expr"/>
+ </template><specialization><template-arg>This(Expr)</template-arg></specialization><typedef name="type"><type>Extends&lt; Expr &gt;</type></typedef></struct-specialization><typedef name="proto_is_callable_"><type>void</type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>Extends&lt; Expr &gt;</type><template>
           <template-type-parameter name="Expr"/>
         </template><parameter name="expr"><paramtype>Expr const &amp;</paramtype><description><para>A Proto expression </para></description></parameter><description><para>
 
@@ -1168,14 +1186,26 @@
     </template><purpose>A generator that wraps expressions passed to it in the specified extension wrapper and uses aggregate initialization for the wrapper. </purpose><description><para>Generators are intended for use as the first template parameter to the <computeroutput>domain&lt;&gt;</computeroutput> class template and control if and how expressions within that domain are to be customized. <computeroutput>pod_generator&lt;&gt;</computeroutput> wraps each expression passed to it in the <computeroutput>Extends&lt;&gt;</computeroutput> wrapper, and uses aggregate initialzation for the wrapped object. </para></description><struct-specialization name="result"><template>
       <template-type-parameter name="This"/>
       <template-type-parameter name="Expr"/>
- </template><specialization><template-arg>This(Expr)</template-arg></specialization><typedef name="type"><type>Extends&lt; Expr &gt;</type></typedef></struct-specialization><method-group name="public member functions"><method name="operator()" cv="const"><type>Extends&lt; Expr &gt;</type><template>
+ </template><specialization><template-arg>This(Expr &amp;)</template-arg></specialization><typedef name="type"><type>Extends&lt; Expr &gt;</type></typedef></struct-specialization><struct-specialization name="result"><template>
+ <template-type-parameter name="This"/>
+ <template-type-parameter name="Expr"/>
+ </template><specialization><template-arg>This(Expr const &amp;)</template-arg></specialization><typedef name="type"><type>Extends&lt; Expr &gt;</type></typedef></struct-specialization><struct-specialization name="result"><template>
+ <template-type-parameter name="This"/>
+ <template-type-parameter name="Expr"/>
+ </template><specialization><template-arg>This(Expr)</template-arg></specialization><typedef name="type"><type>Extends&lt; Expr &gt;</type></typedef></struct-specialization><typedef name="proto_is_callable_"><type>void</type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>Extends&lt; Expr &gt;</type><template>
           <template-type-parameter name="Expr"/>
         </template><parameter name="expr"><paramtype>Expr const &amp;</paramtype><description><para>The expression to wrap </para></description></parameter><description><para>
 
 </para></description><returns><para><computeroutput>Extends&lt;Expr&gt; that = {expr}; return that;</computeroutput> </para></returns></method></method-group></struct><struct name="by_value_generator"><purpose>A generator that replaces child nodes held by reference with ones held by value. Use with <computeroutput>compose_generators</computeroutput> to forward that result to another generator. </purpose><description><para>Generators are intended for use as the first template parameter to the <computeroutput>domain&lt;&gt;</computeroutput> class template and control if and how expressions within that domain are to be customized. <computeroutput>by_value_generator</computeroutput> ensures all child nodes are held by value. This generator is typically composed with a second generator for further processing, as <computeroutput>compose_generators&lt;by_value_generator, MyGenerator&gt;</computeroutput>. </para></description><struct-specialization name="result"><template>
       <template-type-parameter name="This"/>
       <template-type-parameter name="Expr"/>
- </template><specialization><template-arg>This(Expr)</template-arg></specialization><typedef name="type"><type><emphasis>unspecified</emphasis></type></typedef></struct-specialization><method-group name="public member functions"><method name="operator()" cv="const"><type>result&lt; void(Expr)&gt;::type</type><template>
+ </template><specialization><template-arg>This(Expr &amp;)</template-arg></specialization><typedef name="type"><type><emphasis>unspecified</emphasis></type></typedef></struct-specialization><struct-specialization name="result"><template>
+ <template-type-parameter name="This"/>
+ <template-type-parameter name="Expr"/>
+ </template><specialization><template-arg>This(Expr const &amp;)</template-arg></specialization><typedef name="type"><type><emphasis>unspecified</emphasis></type></typedef></struct-specialization><struct-specialization name="result"><template>
+ <template-type-parameter name="This"/>
+ <template-type-parameter name="Expr"/>
+ </template><specialization><template-arg>This(Expr)</template-arg></specialization><typedef name="type"><type><emphasis>unspecified</emphasis></type></typedef></struct-specialization><typedef name="proto_is_callable_"><type>void</type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result&lt; void(Expr)&gt;::type</type><template>
           <template-type-parameter name="Expr"/>
         </template><parameter name="expr"><paramtype>Expr const &amp;</paramtype><description><para>The expression to modify. </para></description></parameter><description><para>
 
@@ -1185,14 +1215,20 @@
     </template><purpose>A composite generator that first applies one transform to an expression and then forwards the result on to another generator for further transformation. </purpose><description><para>Generators are intended for use as the first template parameter to the <computeroutput>domain&lt;&gt;</computeroutput> class template and control if and how expressions within that domain are to be customized. <computeroutput>compose_generators&lt;&gt;</computeroutput> is a composite generator that first applies one transform to an expression and then forwards the result on to another generator for further transformation. </para></description><struct-specialization name="result"><template>
       <template-type-parameter name="This"/>
       <template-type-parameter name="Expr"/>
- </template><specialization><template-arg>This(Expr)</template-arg></specialization><typedef name="type"><type>Second::template result&lt; typename First::template result&lt; void(Expr)&gt;::type &gt;::type</type></typedef></struct-specialization><method-group name="public member functions"><method name="operator()" cv="const"><type>result&lt; void(Expr)&gt;::type</type><template>
+ </template><specialization><template-arg>This(Expr &amp;)</template-arg></specialization><typedef name="type"><type>Second::template result&lt; void(typename First::template result&lt; void(Expr)&gt;::type)&gt;::type</type></typedef></struct-specialization><struct-specialization name="result"><template>
+ <template-type-parameter name="This"/>
+ <template-type-parameter name="Expr"/>
+ </template><specialization><template-arg>This(Expr const &amp;)</template-arg></specialization><typedef name="type"><type>Second::template result&lt; void(typename First::template result&lt; void(Expr)&gt;::type)&gt;::type</type></typedef></struct-specialization><struct-specialization name="result"><template>
+ <template-type-parameter name="This"/>
+ <template-type-parameter name="Expr"/>
+ </template><specialization><template-arg>This(Expr)</template-arg></specialization><typedef name="type"><type>Second::template result&lt; void(typename First::template result&lt; void(Expr)&gt;::type)&gt;::type</type></typedef></struct-specialization><typedef name="proto_is_callable_"><type>void</type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result&lt; void(Expr)&gt;::type</type><template>
           <template-type-parameter name="Expr"/>
         </template><parameter name="expr"><paramtype>Expr const &amp;</paramtype><description><para>The expression to modify. </para></description></parameter><description><para>
 
 </para></description><returns><para>Second()(First()(expr)) </para></returns></method></method-group></struct></namespace></namespace></header><header name="boost/proto/literal.hpp"><para>The literal&lt;&gt; terminal wrapper, and the proto::lit() function for creating literal&lt;&gt; wrappers. </para><namespace name="boost"><namespace name="proto"><namespace name="utility"><struct name="literal"><template>
       <template-type-parameter name="T"/>
       <template-type-parameter name="Domain"><default>default_domain</default></template-type-parameter>
- </template><inherit access="public">boost::proto::extends&lt; Expr, Derived, Domain, Tag &gt;</inherit><purpose>A simple wrapper for a terminal, provided for ease of use. </purpose><description><para>A simple wrapper for a terminal, provided for ease of use. In all cases, <computeroutput>literal&lt;X&gt; l(x);</computeroutput> is equivalent to <computeroutput>terminal&lt;X&gt;::type l = {x};</computeroutput>.</para><para>The <computeroutput>Domain</computeroutput> template parameter defaults to <computeroutput>proto::default_domain</computeroutput>. </para></description><typedef name="value_type"><type><emphasis>unspecified</emphasis></type></typedef><typedef name="reference"><type><emphasis>unspecified</emphasis></type></typedef><typedef name="const_reference"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="get" cv=""><type>reference</type></method><method name="get" cv="const"><type>const_reference</type></method></method-group><constru
ctor><template>
+ </template><inherit access="public">boost::proto::extends&lt; Expr, Derived, Domain, Tag &gt;</inherit><purpose>A simple wrapper for a terminal, provided for ease of use. </purpose><description><para>A simple wrapper for a terminal, provided for ease of use. In all cases, <computeroutput>literal&lt;X&gt; l(x);</computeroutput> is equivalent to <computeroutput>terminal&lt;X&gt;::type l = {x};</computeroutput>.</para><para>The <computeroutput>Domain</computeroutput> template parameter defaults to <computeroutput>proto::default_domain</computeroutput>. </para></description><typedef name="value_type"><type>terminal_type::proto_child_ref0::value_type</type></typedef><typedef name="reference"><type>terminal_type::proto_child_ref0::reference</type></typedef><typedef name="const_reference"><type>terminal_type::proto_child_ref0::const_reference</type></typedef><method-group name="public member functions"><method name="get" cv=""><type>reference</type></method><method name="get" cv="const"><type>const_reference</
type></method></method-group><constructor><template>
           <template-type-parameter name="U"/>
         </template><parameter name="u"><paramtype>U &amp;</paramtype></parameter></constructor><constructor><template>
           <template-type-parameter name="U"/>
@@ -1397,20 +1433,40 @@
 </itemizedlist>
 Let <computeroutput>make_&lt;Tag&gt;(b0,...bN)</computeroutput> be defined as <computeroutput>expr&lt;Tag, listN&lt;B0,...BN&gt; &gt;::make(b0,...bN)</computeroutput> where <computeroutput>Bx</computeroutput> is the type of <computeroutput>bx</computeroutput>.</para><para>
 
-</para></description><returns><para><computeroutput>Domain()(make_&lt;Tag&gt;(wrap_&lt;0&gt;(s),...wrap_&lt;N-1&gt;(S)))</computeroutput>, where N is the size of <computeroutput>Sequence</computeroutput>. </para></returns></overloaded-function></namespace></namespace></header><header name="boost/proto/matches.hpp"><para>Contains definition of matches&lt;&gt; metafunction for determining if a given expression matches a given pattern. </para><namespace name="boost"><namespace name="proto"><namespace name="control"><struct name="not_"><template>
+</para></description><returns><para><computeroutput>Domain()(make_&lt;Tag&gt;(wrap_&lt;0&gt;(s),...wrap_&lt;N-1&gt;(S)))</computeroutput>, where N is the size of <computeroutput>Sequence</computeroutput>. </para></returns></overloaded-function><overloaded-function name="implicit_expr"><signature><type><emphasis>unspecified</emphasis></type><template>
+ <template-type-parameter name="A0"/>
+ </template><parameter name="a0"><paramtype>A0 &amp;</paramtype></parameter></signature><signature><type><emphasis>unspecified</emphasis></type><template>
+ <template-type-parameter name="A0"/>
+ <template-type-parameter name="A1"/>
+ </template><parameter name="a0"><paramtype>A0 &amp;</paramtype></parameter><parameter name="a1"><paramtype>A1 &amp;</paramtype></parameter></signature><signature><type><emphasis>unspecified</emphasis></type><template>
+ <template-type-parameter name="A0"/>
+ <template-type-parameter name="A1"/>
+ <template-type-parameter name="A2"/>
+ </template><parameter name="a0"><paramtype>A0 &amp;</paramtype></parameter><parameter name="a1"><paramtype>A1 &amp;</paramtype></parameter><parameter name="a2"><paramtype>A2 &amp;</paramtype></parameter></signature><signature><type><emphasis>unspecified</emphasis></type><template>
+ <template-type-parameter name="A0"/>
+ <template-type-parameter name="A1"/>
+ <template-type-parameter name="A2"/>
+ <template-type-parameter name="A3"/>
+ </template><parameter name="a0"><paramtype>A0 &amp;</paramtype></parameter><parameter name="a1"><paramtype>A1 &amp;</paramtype></parameter><parameter name="a2"><paramtype>A2 &amp;</paramtype></parameter><parameter name="a3"><paramtype>A3 &amp;</paramtype></parameter></signature><signature><type><emphasis>unspecified</emphasis></type><template>
+ <template-type-parameter name="A0"/>
+ <template-type-parameter name="A1"/>
+ <template-type-parameter name="A2"/>
+ <template-type-parameter name="A3"/>
+ <template-type-parameter name="A4"/>
+ </template><parameter name="a0"><paramtype>A0 &amp;</paramtype></parameter><parameter name="a1"><paramtype>A1 &amp;</paramtype></parameter><parameter name="a2"><paramtype>A2 &amp;</paramtype></parameter><parameter name="a3"><paramtype>A3 &amp;</paramtype></parameter><parameter name="a4"><paramtype>A4 &amp;</paramtype></parameter></signature><purpose>Return a proxy object that holds its arguments by reference and is implicitly convertible to an expression. </purpose></overloaded-function></namespace></namespace></header><header name="boost/proto/matches.hpp"><para>Contains definition of matches&lt;&gt; metafunction for determining if a given expression matches a given pattern. </para><namespace name="boost"><namespace name="proto"><namespace name="control"><struct name="not_"><template>
       <template-type-parameter name="Grammar"/>
- </template><inherit access="public">transform&lt; boost::proto::control::not_&lt; Grammar &gt; &gt;</inherit><purpose>Inverts the set of expressions matched by a grammar. When used as a transform, <computeroutput>not_&lt;&gt;</computeroutput> returns the current expression unchanged. </purpose><description><para>If an expression type <computeroutput>E</computeroutput> does not match a grammar <computeroutput>G</computeroutput>, then <computeroutput>E</computeroutput> does match <computeroutput>not_&lt;G&gt;</computeroutput>. For example, <computeroutput>not_&lt;terminal&lt;_&gt; &gt;</computeroutput> will match any non-terminal. </para></description><struct name="impl"><template>
+ </template><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>Inverts the set of expressions matched by a grammar. When used as a transform, <computeroutput>not_&lt;&gt;</computeroutput> returns the current expression unchanged. </purpose><description><para>If an expression type <computeroutput>E</computeroutput> does not match a grammar <computeroutput>G</computeroutput>, then <computeroutput>E</computeroutput> does match <computeroutput>not_&lt;G&gt;</computeroutput>. For example, <computeroutput>not_&lt;terminal&lt;_&gt; &gt;</computeroutput> will match 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><typedef name="result_type"><type>Expr</type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>impl::expr_param</type><parameter name="expr"><paramtype>typename impl::expr_param</paramtype><description><para>An expression </para></description></parameter><parameter name=""><paramtype>typename impl::state_param</paramtype></parameter><parameter name=""><paramtype>typename impl::data_param</paramtype></parameter><description><para>
+ </template><inherit access="public">boost::proto::transform_impl&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>impl::expr_param</type><parameter name="expr"><paramtype>typename impl::expr_param</paramtype><description><para>An expression </para></description></parameter><parameter name=""><paramtype>typename impl::state_param</paramtype></parameter><parameter name=""><paramtype>typename impl::data_param</paramtype></parameter><description><para>
 
 
 </para></description><requires><para><computeroutput>matches&lt;Expr,not_&gt;::value</computeroutput> is <computeroutput>true</computeroutput>. </para></requires><returns><para><computeroutput>expr</computeroutput> </para></returns></method></method-group></struct><typedef name="proto_base_expr"><type><classname>not_</classname></type></typedef></struct><struct name="if_"><template>
       <template-type-parameter name="If"/>
       <template-type-parameter name="Then"><default>_</default></template-type-parameter>
       <template-type-parameter name="Else"><default>not_&lt;_&gt;</default></template-type-parameter>
- </template><inherit access="public">transform&lt; boost::proto::control::if_&lt; If, Then, Else &gt; &gt;</inherit><purpose>Used to select one grammar or another based on the result of a compile-time Boolean. When used as a transform, <computeroutput>if_&lt;&gt;</computeroutput> selects between two transforms based on a compile-time Boolean. </purpose><description><para>When <computeroutput>if_&lt;If,Then,Else&gt;</computeroutput> is used as a grammar, <computeroutput>If</computeroutput> must be a Proto transform and <computeroutput>Then</computeroutput> and <computeroutput>Else</computeroutput> must be grammars. An expression type <computeroutput>E</computeroutput> matches <computeroutput>if_&lt;If,Then,Else&gt;</computeroutput> if <computeroutput>when&lt;_,If&gt;::result&lt;void(E,int,int)&gt;::type::value</computeroutput> is <computeroutput>true</computeroutput> and <computeroutput>E</computeroutput> matches <computeroutput>U</computeroutput>; or, if <computeroutput>when&lt;_,If&gt;::result&lt;void(E
,int,int)&gt;::type::value</computeroutput> is <computeroutput>false</computeroutput> and <computeroutput>E</computeroutput> matches <computeroutput>V</computeroutput>.</para><para>The template parameter <computeroutput>Then</computeroutput> defaults to <computeroutput>_</computeroutput> and <computeroutput>Else</computeroutput> defaults to <computeroutput>not&lt;_&gt;</computeroutput>, so an expression type <computeroutput>E</computeroutput> will match <computeroutput>if_&lt;If&gt;</computeroutput> if and only if <computeroutput>when&lt;_,If&gt;::result&lt;void(E,int,int)&gt;::type::value</computeroutput> is <computeroutput>true</computeroutput>.</para><para><programlisting> // A grammar that only matches integral terminals,
+ </template><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>Used to select one grammar or another based on the result of a compile-time Boolean. When used as a transform, <computeroutput>if_&lt;&gt;</computeroutput> selects between two transforms based on a compile-time Boolean. </purpose><description><para>When <computeroutput>if_&lt;If,Then,Else&gt;</computeroutput> is used as a grammar, <computeroutput>If</computeroutput> must be a Proto transform and <computeroutput>Then</computeroutput> and <computeroutput>Else</computeroutput> must be grammars. An expression type <computeroutput>E</computeroutput> matches <computeroutput>if_&lt;If,Then,Else&gt;</computeroutput> if <computeroutput>when&lt;_,If&gt;::result&lt;void(E,int,int)&gt;::type::value</computeroutput> is <computeroutput>true</computeroutput> and <computeroutput>E</computeroutput> matches <computeroutput>U</computeroutput>; or, if <computeroutput>when&lt;_,If&gt;::result&lt;void(E,int,int)&gt
;::type::value</computeroutput> is <computeroutput>false</computeroutput> and <computeroutput>E</computeroutput> matches <computeroutput>V</computeroutput>.</para><para>The template parameter <computeroutput>Then</computeroutput> defaults to <computeroutput>_</computeroutput> and <computeroutput>Else</computeroutput> defaults to <computeroutput>not&lt;_&gt;</computeroutput>, so an expression type <computeroutput>E</computeroutput> will match <computeroutput>if_&lt;If&gt;</computeroutput> if and only if <computeroutput>when&lt;_,If&gt;::result&lt;void(E,int,int)&gt;::type::value</computeroutput> is <computeroutput>true</computeroutput>.</para><para><programlisting> // A grammar that only matches integral terminals,
  // using is_integral&lt;&gt; from Boost.Type_traits.
  struct IsIntegral
    : and_&lt;
@@ -1434,7 +1490,7 @@
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><typedef name="condition"><type><classname>when</classname>&lt; _, If &gt;::template <classname>impl</classname>&lt; Expr, State, Data &gt;::result_type</type></typedef><typedef name="which"><type>mpl::if_c&lt; remove_reference&lt; condition &gt;::type::value, <classname>when</classname>&lt; _, Then &gt;, <classname>when</classname>&lt; _, Else &gt;&gt;::type</type></typedef><typedef name="result_type"><type>which::template <classname>impl</classname>&lt; Expr, State, Data &gt;::result_type</type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl::expr_param</paramtype><description><para>An expression </para></description></parameter><parameter name="state"><paramtype>typename impl::state_param</paramtype><description><para>The current state </para></description></parameter><parameter name="data"><paramtype>typename impl::data_param</paramtype><description><para>A data of arbitrary
 type </para></description></parameter><description><para>
+ </template><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="condition"><type><classname>when</classname>&lt; _, If &gt;::template <classname>impl</classname>&lt; Expr, State, Data &gt;::result_type</type></typedef><typedef name="which"><type>mpl::if_c&lt; remove_reference&lt; condition &gt;::type::value, <classname>when</classname>&lt; _, Then &gt;, <classname>when</classname>&lt; _, Else &gt;&gt;::type</type></typedef><typedef name="result_type"><type>which::template <classname>impl</classname>&lt; Expr, State, Data &gt;::result_type</type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl::expr_param</paramtype><description><para>An expression </para></description></parameter><parameter name="state"><paramtype>typename impl::state_param</paramtype><description><para>The current state </para></description></parameter><parameter name="da
ta"><paramtype>typename impl::data_param</paramtype><description><para>A data of arbitrary type </para></description></parameter><description><para>
 
 </para></description><returns><para><computeroutput>which::impl&lt;Expr, State, Data&gt;()(expr, state, data)</computeroutput> </para></returns></method></method-group></struct><typedef name="proto_base_expr"><type><classname>if_</classname></type></typedef></struct><struct name="or_"><template>
       <template-type-parameter name="G0"/>
@@ -1445,7 +1501,7 @@
       <template-type-parameter name="G5"/>
       <template-type-parameter name="G6"/>
       <template-type-parameter name="G7"/>
- </template><inherit access="public">transform&lt; boost::proto::control::or_&lt; G0, G1, G2, G3, G4, G5, G6, G7 &gt; &gt;</inherit><purpose>For matching one of a set of alternate grammars. Alternates tried in order to avoid ambiguity. When used as a transform, <computeroutput>or_&lt;&gt;</computeroutput> applies the transform associated with the first grammar that matches the expression. </purpose><description><para>An expression type <computeroutput>E</computeroutput> matches <computeroutput>or_&lt;B0,B1,...Bn&gt;</computeroutput> if <computeroutput>E</computeroutput> matches any <computeroutput>Bx</computeroutput> for <computeroutput>x</computeroutput> in <computeroutput>[0,n)</computeroutput>.</para><para>When applying <computeroutput>or_&lt;B0,B1,...Bn&gt;</computeroutput> as a transform with an expression <computeroutput>e</computeroutput> of type <computeroutput>E</computeroutput>, state <computeroutput>s</computeroutput> and data <computeroutput>v</computeroutput>, it is equivalent to <computerou
tput>Bx()(e, s, v)</computeroutput>, where <computeroutput>x</computeroutput> is the lowest number such that <computeroutput>matches&lt;E,Bx&gt;::value</computeroutput> is <computeroutput>true</computeroutput>. </para></description><struct name="impl"><template>
+ </template><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>For matching one of a set of alternate grammars. Alternates tried in order to avoid ambiguity. When used as a transform, <computeroutput>or_&lt;&gt;</computeroutput> applies the transform associated with the first grammar that matches the expression. </purpose><description><para>An expression type <computeroutput>E</computeroutput> matches <computeroutput>or_&lt;B0,B1,...Bn&gt;</computeroutput> if <computeroutput>E</computeroutput> matches any <computeroutput>Bx</computeroutput> for <computeroutput>x</computeroutput> in <computeroutput>[0,n)</computeroutput>.</para><para>When applying <computeroutput>or_&lt;B0,B1,...Bn&gt;</computeroutput> as a transform with an expression <computeroutput>e</computeroutput> of type <computeroutput>E</computeroutput>, state <computeroutput>s</computeroutput> and data <computeroutput>v</computeroutput>, it is equivalent to <computeroutput>Bx()(e, s, v)</computer
output>, where <computeroutput>x</computeroutput> is the lowest number such that <computeroutput>matches&lt;E,Bx&gt;::value</computeroutput> is <computeroutput>true</computeroutput>. </para></description><struct name="impl"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
@@ -1465,13 +1521,13 @@
       <template-type-parameter name="G5"/>
       <template-type-parameter name="G6"/>
       <template-type-parameter name="G7"/>
- </template><inherit access="public">transform&lt; boost::proto::control::and_&lt; G0, G1, G2, G3, G4, G5, G6, G7 &gt; &gt;</inherit><purpose>For matching all of a set of grammars. When used as a transform, <computeroutput>and_&lt;&gt;</computeroutput> applies the transform associated with the last grammar in the set. </purpose><description><para>An expression type <computeroutput>E</computeroutput> matches <computeroutput>and_&lt;B0,B1,...Bn&gt;</computeroutput> if <computeroutput>E</computeroutput> matches all <computeroutput>Bx</computeroutput> for <computeroutput>x</computeroutput> in <computeroutput>[0,n)</computeroutput>.</para><para>When applying <computeroutput>and_&lt;B0,B1,...Bn&gt;</computeroutput> as a transform with an expression <computeroutput>e</computeroutput>, state <computeroutput>s</computeroutput> and data <computeroutput>v</computeroutput>, it is equivalent to <computeroutput>Bn()(e, s, v)</computeroutput>. </para></description><struct name="impl"><template>
+ </template><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>For matching all of a set of grammars. When used as a transform, <computeroutput>and_&lt;&gt;</computeroutput> applies the transform associated with the last grammar in the set. </purpose><description><para>An expression type <computeroutput>E</computeroutput> matches <computeroutput>and_&lt;B0,B1,...Bn&gt;</computeroutput> if <computeroutput>E</computeroutput> matches all <computeroutput>Bx</computeroutput> for <computeroutput>x</computeroutput> in <computeroutput>[0,n)</computeroutput>.</para><para>When applying <computeroutput>and_&lt;B0,B1,...Bn&gt;</computeroutput> as a transform with an expression <computeroutput>e</computeroutput>, state <computeroutput>s</computeroutput> and data <computeroutput>v</computeroutput>, it is equivalent to <computeroutput>Bn()(e, s, v)</computeroutput>. </para></description><struct name="impl"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
     </template></struct><typedef name="proto_base_expr"><type><classname>and_</classname></type></typedef></struct><struct name="switch_"><template>
       <template-type-parameter name="Cases"/>
- </template><inherit access="public">transform&lt; boost::proto::control::switch_&lt; Cases &gt; &gt;</inherit><purpose>For matching one of a set of alternate grammars, which are looked up based on an expression's tag type. When used as a transform, <computeroutput>switch_&lt;&gt;</computeroutput> applies the transform associated with the grammar that matches the expression. </purpose><description><para>
+ </template><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>For matching one of a set of alternate grammars, which are looked up based on an expression's tag type. When used as a transform, <computeroutput>switch_&lt;&gt;</computeroutput> applies the transform associated with the grammar that matches the expression. </purpose><description><para>
 An expression type <computeroutput>E</computeroutput> matches <computeroutput>switch_&lt;C&gt;</computeroutput> if <computeroutput>E</computeroutput> matches <computeroutput>C::case_&lt;E::proto_tag&gt;</computeroutput>.</para><para>When applying <computeroutput>switch_&lt;C&gt;</computeroutput> as a transform with an expression <computeroutput>e</computeroutput> of type <computeroutput>E</computeroutput>, state <computeroutput>s</computeroutput> and data <computeroutput>v</computeroutput>, it is equivalent to <computeroutput>C::case_&lt;E::proto_tag&gt;()(e, s, v)</computeroutput>. </para></description><struct name="impl"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
@@ -1528,7 +1584,7 @@
 </para></description></struct><struct-specialization name="matches"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="Grammar"/>
- </template><specialization><template-arg>Expr &amp;</template-arg><template-arg>Grammar</template-arg></specialization></struct-specialization></namespace><namespace name="wildcardns_"><struct name="_"><inherit access="public">transform&lt; boost::proto::wildcardns_::_ &gt;</inherit><purpose>A wildcard grammar element that matches any expression, and a transform that returns the current expression unchanged. </purpose><description><para>The wildcard type, <computeroutput>_</computeroutput>, is a grammar element such that <computeroutput>matches&lt;E,_&gt;::value</computeroutput> is <computeroutput>true</computeroutput> for any expression type <computeroutput>E</computeroutput>.</para><para>The wildcard can also be used as a stand-in for a template argument when matching terminals. For instance, the following is a grammar that will match any <computeroutput>std::complex&lt;&gt;</computeroutput> terminal:</para><para><programlisting> BOOST_MPL_ASSERT((
+ </template><specialization><template-arg>Expr &amp;</template-arg><template-arg>Grammar</template-arg></specialization></struct-specialization></namespace><namespace name="wildcardns_"><struct name="_"><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>A wildcard grammar element that matches any expression, and a transform that returns the current expression unchanged. </purpose><description><para>The wildcard type, <computeroutput>_</computeroutput>, is a grammar element such that <computeroutput>matches&lt;E,_&gt;::value</computeroutput> is <computeroutput>true</computeroutput> for any expression type <computeroutput>E</computeroutput>.</para><para>The wildcard can also be used as a stand-in for a template argument when matching terminals. For instance, the following is a grammar that will match any <computeroutput>std::complex&lt;&gt;</computeroutput> terminal:</para><para><programlisting> BOOST_MPL_ASSERT((
      matches&lt;
          terminal&lt;std::complex&lt;double&gt; &gt;::type
        , terminal&lt;std::complex&lt; _ &gt; &gt;
@@ -1552,7 +1608,7 @@
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><typedef name="result_type"><type>Expr</type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>impl::expr_param</type><parameter name="expr"><paramtype>typename impl::expr_param</paramtype><description><para>An expression </para></description></parameter><parameter name=""><paramtype>typename impl::state_param</paramtype></parameter><parameter name=""><paramtype>typename impl::data_param</paramtype></parameter><description><para>
+ </template><inherit access="public">boost::proto::transform_impl&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>impl::expr_param</type><parameter name="expr"><paramtype>typename impl::expr_param</paramtype><description><para>An expression </para></description></parameter><parameter name=""><paramtype>typename impl::state_param</paramtype></parameter><parameter name=""><paramtype>typename impl::data_param</paramtype></parameter><description><para>
 
 </para></description><returns><para><computeroutput>expr</computeroutput> </para></returns></method></method-group></struct><typedef name="proto_base_expr"><type><classname>_</classname></type></typedef></struct></namespace></namespace></namespace></header><header name="boost/proto/operators.hpp"><para>Contains all the overloaded operators that make it possible to build Proto expression trees. </para><namespace name="boost"><namespace name="proto"><struct name="is_extension"><template>
       <template-type-parameter name="T"/>
@@ -1960,7 +2016,7 @@
           <template-type-parameter name="A0"/>
           <template-type-parameter name="A1"/>
           <template-type-parameter name="A2"/>
- </template><parameter name="a0"><paramtype>A0 const &amp;</paramtype></parameter><parameter name="a1"><paramtype>A1 const &amp;</paramtype></parameter><parameter name="a2"><paramtype>A2 const &amp;</paramtype></parameter><description><para>if_else </para></description></function></namespace></namespace></header><header name="boost/proto/proto.hpp"><para>Includes all of Proto. </para></header><header name="boost/proto/proto_fwd.hpp"><para>Forward declarations of all of proto's public types and functions. </para><namespace name="boost"><namespace name="proto"><struct name="callable"><typedef name="proto_is_callable_"><type>void</type></typedef></struct><namespace name="context"/><namespace name="control"><data-member name="N"><type>int const</type></data-member></namespace><namespace name="exops"/><namespace name="functional"><typedef name="make_terminal"><type><classname>make_expr</classname>&lt; <classname>tag::terminal</classname> &gt;</type></typedef><typedef name="make_unary_plus"><type><classnam
e>make_expr</classname>&lt; <classname>tag::unary_plus</classname> &gt;</type></typedef><typedef name="make_negate"><type><classname>make_expr</classname>&lt; <classname>tag::negate</classname> &gt;</type></typedef><typedef name="make_dereference"><type><classname>make_expr</classname>&lt; <classname>tag::dereference</classname> &gt;</type></typedef><typedef name="make_complement"><type><classname>make_expr</classname>&lt; <classname>tag::complement</classname> &gt;</type></typedef><typedef name="make_address_of"><type><classname>make_expr</classname>&lt; <classname>tag::address_of</classname> &gt;</type></typedef><typedef name="make_logical_not"><type><classname>make_expr</classname>&lt; <classname>tag::logical_not</classname> &gt;</type></typedef><typedef name="make_pre_inc"><type><classname>make_expr</classname>&lt; <classname>tag::pre_inc</classname> &gt;</type></typedef><typedef name="make_pre_dec"><type><classname>make_expr</classname>&lt; <classname>tag::pre_dec</classname> &gt;</type></typedef><typed
ef name="make_post_inc"><type><classname>make_expr</classname>&lt; <classname>tag::post_inc</classname> &gt;</type></typedef><typedef name="make_post_dec"><type><classname>make_expr</classname>&lt; <classname>tag::post_dec</classname> &gt;</type></typedef><typedef name="make_shift_left"><type><classname>make_expr</classname>&lt; <classname>tag::shift_left</classname> &gt;</type></typedef><typedef name="make_shift_right"><type><classname>make_expr</classname>&lt; <classname>tag::shift_right</classname> &gt;</type></typedef><typedef name="make_multiplies"><type><classname>make_expr</classname>&lt; <classname>tag::multiplies</classname> &gt;</type></typedef><typedef name="make_divides"><type><classname>make_expr</classname>&lt; <classname>tag::divides</classname> &gt;</type></typedef><typedef name="make_modulus"><type><classname>make_expr</classname>&lt; <classname>tag::modulus</classname> &gt;</type></typedef><typedef name="make_plus"><type><classname>make_expr</classname>&lt; <classname>tag::plus</classname>
&gt;</type></typedef><typedef name="make_minus"><type><classname>make_expr</classname>&lt; <classname>tag::minus</classname> &gt;</type></typedef><typedef name="make_less"><type><classname>make_expr</classname>&lt; <classname>tag::less</classname> &gt;</type></typedef><typedef name="make_greater"><type><classname>make_expr</classname>&lt; <classname>tag::greater</classname> &gt;</type></typedef><typedef name="make_less_equal"><type><classname>make_expr</classname>&lt; <classname>tag::less_equal</classname> &gt;</type></typedef><typedef name="make_greater_equal"><type><classname>make_expr</classname>&lt; <classname>tag::greater_equal</classname> &gt;</type></typedef><typedef name="make_equal_to"><type><classname>make_expr</classname>&lt; <classname>tag::equal_to</classname> &gt;</type></typedef><typedef name="make_not_equal_to"><type><classname>make_expr</classname>&lt; <classname>tag::not_equal_to</classname> &gt;</type></typedef><typedef name="make_logical_or"><type><classname>make_expr</classname>&lt; <cla
ssname>tag::logical_or</classname> &gt;</type></typedef><typedef name="make_logical_and"><type><classname>make_expr</classname>&lt; <classname>tag::logical_and</classname> &gt;</type></typedef><typedef name="make_bitwise_and"><type><classname>make_expr</classname>&lt; <classname>tag::bitwise_and</classname> &gt;</type></typedef><typedef name="make_bitwise_or"><type><classname>make_expr</classname>&lt; <classname>tag::bitwise_or</classname> &gt;</type></typedef><typedef name="make_bitwise_xor"><type><classname>make_expr</classname>&lt; <classname>tag::bitwise_xor</classname> &gt;</type></typedef><typedef name="make_comma"><type><classname>make_expr</classname>&lt; <classname>tag::comma</classname> &gt;</type></typedef><typedef name="make_mem_ptr"><type><classname>make_expr</classname>&lt; <classname>tag::mem_ptr</classname> &gt;</type></typedef><typedef name="make_assign"><type><classname>make_expr</classname>&lt; <classname>tag::assign</classname> &gt;</type></typedef><typedef name="make_shift_left_assign"><
type><classname>make_expr</classname>&lt; <classname>tag::shift_left_assign</classname> &gt;</type></typedef><typedef name="make_shift_right_assign"><type><classname>make_expr</classname>&lt; <classname>tag::shift_right_assign</classname> &gt;</type></typedef><typedef name="make_multiplies_assign"><type><classname>make_expr</classname>&lt; <classname>tag::multiplies_assign</classname> &gt;</type></typedef><typedef name="make_divides_assign"><type><classname>make_expr</classname>&lt; <classname>tag::divides_assign</classname> &gt;</type></typedef><typedef name="make_modulus_assign"><type><classname>make_expr</classname>&lt; <classname>tag::modulus_assign</classname> &gt;</type></typedef><typedef name="make_plus_assign"><type><classname>make_expr</classname>&lt; <classname>tag::plus_assign</classname> &gt;</type></typedef><typedef name="make_minus_assign"><type><classname>make_expr</classname>&lt; <classname>tag::minus_assign</classname> &gt;</type></typedef><typedef name="make_bitwise_and_assign"><type><class
name>make_expr</classname>&lt; <classname>tag::bitwise_and_assign</classname> &gt;</type></typedef><typedef name="make_bitwise_or_assign"><type><classname>make_expr</classname>&lt; <classname>tag::bitwise_or_assign</classname> &gt;</type></typedef><typedef name="make_bitwise_xor_assign"><type><classname>make_expr</classname>&lt; <classname>tag::bitwise_xor_assign</classname> &gt;</type></typedef><typedef name="make_subscript"><type><classname>make_expr</classname>&lt; <classname>tag::subscript</classname> &gt;</type></typedef><typedef name="make_if_else"><type><classname>make_expr</classname>&lt; <classname>tag::if_else_</classname> &gt;</type></typedef><typedef name="make_function"><type><classname>make_expr</classname>&lt; <classname>tag::function</classname> &gt;</type></typedef></namespace><namespace name="op"/><namespace name="result_of"/><namespace name="tag"/><namespace name="utility"/><typedef name="ignore"><type><emphasis>unspecified</emphasis></type></typedef><typedef name="_flatten"><type><classna
me>functional::flatten</classname></type></typedef><typedef name="_pop_front"><type><classname>functional::pop_front</classname></type></typedef><typedef name="_reverse"><type><classname>functional::reverse</classname></type></typedef><typedef name="_eval"><type><classname>functional::eval</classname></type></typedef><typedef name="_deep_copy"><type><classname>functional::deep_copy</classname></type></typedef><typedef name="_make_terminal"><type><classname>_make_expr</classname>&lt; <classname>tag::terminal</classname> &gt;</type></typedef><typedef name="_make_unary_plus"><type><classname>_make_expr</classname>&lt; <classname>tag::unary_plus</classname> &gt;</type></typedef><typedef name="_make_negate"><type><classname>_make_expr</classname>&lt; <classname>tag::negate</classname> &gt;</type></typedef><typedef name="_make_dereference"><type><classname>_make_expr</classname>&lt; <classname>tag::dereference</classname> &gt;</type></typedef><typedef name="_make_complement"><type><classname>_make_expr</classname>
&lt; <classname>tag::complement</classname> &gt;</type></typedef><typedef name="_make_address_of"><type><classname>_make_expr</classname>&lt; <classname>tag::address_of</classname> &gt;</type></typedef><typedef name="_make_logical_not"><type><classname>_make_expr</classname>&lt; <classname>tag::logical_not</classname> &gt;</type></typedef><typedef name="_make_pre_inc"><type><classname>_make_expr</classname>&lt; <classname>tag::pre_inc</classname> &gt;</type></typedef><typedef name="_make_pre_dec"><type><classname>_make_expr</classname>&lt; <classname>tag::pre_dec</classname> &gt;</type></typedef><typedef name="_make_post_inc"><type><classname>_make_expr</classname>&lt; <classname>tag::post_inc</classname> &gt;</type></typedef><typedef name="_make_post_dec"><type><classname>_make_expr</classname>&lt; <classname>tag::post_dec</classname> &gt;</type></typedef><typedef name="_make_shift_left"><type><classname>_make_expr</classname>&lt; <classname>tag::shift_left</classname> &gt;</type></typedef><typedef name="_m
ake_shift_right"><type><classname>_make_expr</classname>&lt; <classname>tag::shift_right</classname> &gt;</type></typedef><typedef name="_make_multiplies"><type><classname>_make_expr</classname>&lt; <classname>tag::multiplies</classname> &gt;</type></typedef><typedef name="_make_divides"><type><classname>_make_expr</classname>&lt; <classname>tag::divides</classname> &gt;</type></typedef><typedef name="_make_modulus"><type><classname>_make_expr</classname>&lt; <classname>tag::modulus</classname> &gt;</type></typedef><typedef name="_make_plus"><type><classname>_make_expr</classname>&lt; <classname>tag::plus</classname> &gt;</type></typedef><typedef name="_make_minus"><type><classname>_make_expr</classname>&lt; <classname>tag::minus</classname> &gt;</type></typedef><typedef name="_make_less"><type><classname>_make_expr</classname>&lt; <classname>tag::less</classname> &gt;</type></typedef><typedef name="_make_greater"><type><classname>_make_expr</classname>&lt; <classname>tag::greater</classname> &gt;</type></ty
pedef><typedef name="_make_less_equal"><type><classname>_make_expr</classname>&lt; <classname>tag::less_equal</classname> &gt;</type></typedef><typedef name="_make_greater_equal"><type><classname>_make_expr</classname>&lt; <classname>tag::greater_equal</classname> &gt;</type></typedef><typedef name="_make_equal_to"><type><classname>_make_expr</classname>&lt; <classname>tag::equal_to</classname> &gt;</type></typedef><typedef name="_make_not_equal_to"><type><classname>_make_expr</classname>&lt; <classname>tag::not_equal_to</classname> &gt;</type></typedef><typedef name="_make_logical_or"><type><classname>_make_expr</classname>&lt; <classname>tag::logical_or</classname> &gt;</type></typedef><typedef name="_make_logical_and"><type><classname>_make_expr</classname>&lt; <classname>tag::logical_and</classname> &gt;</type></typedef><typedef name="_make_bitwise_and"><type><classname>_make_expr</classname>&lt; <classname>tag::bitwise_and</classname> &gt;</type></typedef><typedef name="_make_bitwise_or"><type><classnam
e>_make_expr</classname>&lt; <classname>tag::bitwise_or</classname> &gt;</type></typedef><typedef name="_make_bitwise_xor"><type><classname>_make_expr</classname>&lt; <classname>tag::bitwise_xor</classname> &gt;</type></typedef><typedef name="_make_comma"><type><classname>_make_expr</classname>&lt; <classname>tag::comma</classname> &gt;</type></typedef><typedef name="_make_mem_ptr"><type><classname>_make_expr</classname>&lt; <classname>tag::mem_ptr</classname> &gt;</type></typedef><typedef name="_make_assign"><type><classname>_make_expr</classname>&lt; <classname>tag::assign</classname> &gt;</type></typedef><typedef name="_make_shift_left_assign"><type><classname>_make_expr</classname>&lt; <classname>tag::shift_left_assign</classname> &gt;</type></typedef><typedef name="_make_shift_right_assign"><type><classname>_make_expr</classname>&lt; <classname>tag::shift_right_assign</classname> &gt;</type></typedef><typedef name="_make_multiplies_assign"><type><classname>_make_expr</classname>&lt; <classname>tag::mult
iplies_assign</classname> &gt;</type></typedef><typedef name="_make_divides_assign"><type><classname>_make_expr</classname>&lt; <classname>tag::divides_assign</classname> &gt;</type></typedef><typedef name="_make_modulus_assign"><type><classname>_make_expr</classname>&lt; <classname>tag::modulus_assign</classname> &gt;</type></typedef><typedef name="_make_plus_assign"><type><classname>_make_expr</classname>&lt; <classname>tag::plus_assign</classname> &gt;</type></typedef><typedef name="_make_minus_assign"><type><classname>_make_expr</classname>&lt; <classname>tag::minus_assign</classname> &gt;</type></typedef><typedef name="_make_bitwise_and_assign"><type><classname>_make_expr</classname>&lt; <classname>tag::bitwise_and_assign</classname> &gt;</type></typedef><typedef name="_make_bitwise_or_assign"><type><classname>_make_expr</classname>&lt; <classname>tag::bitwise_or_assign</classname> &gt;</type></typedef><typedef name="_make_bitwise_xor_assign"><type><classname>_make_expr</classname>&lt; <classname>tag::b
itwise_xor_assign</classname> &gt;</type></typedef><typedef name="_make_subscript"><type><classname>_make_expr</classname>&lt; <classname>tag::subscript</classname> &gt;</type></typedef><typedef name="_make_if_else"><type><classname>_make_expr</classname>&lt; <classname>tag::if_else_</classname> &gt;</type></typedef><typedef name="_make_function"><type><classname>_make_expr</classname>&lt; <classname>tag::function</classname> &gt;</type></typedef><typedef name="_child0"><type><classname>_child_c</classname>&lt; 0 &gt;</type></typedef><typedef name="_child1"><type><classname>_child_c</classname>&lt; 1 &gt;</type></typedef><typedef name="_child"><type><classname>_child0</classname></type></typedef><typedef name="_value"><type><classname>_child0</classname></type></typedef><typedef name="_left"><type><classname>_child0</classname></type></typedef><typedef name="_right"><type><classname>_child1</classname></type></typedef><typedef name="_child2"><type><classname>_child_c</classname>&lt; 2 &gt;</type></typedef><t
ypedef name="_child3"><type><classname>_child_c</classname>&lt; 3 &gt;</type></typedef></namespace></namespace></header><header name="boost/proto/tags.hpp"><para>Contains the tags for all the overloadable operators in C++ </para><namespace name="boost"><namespace name="proto"><namespace name="tag"><struct name="terminal"><purpose>Tag type for terminals; aka, leaves in the expression tree. </purpose></struct><struct name="unary_plus"><purpose>Tag type for the unary + operator. </purpose></struct><struct name="negate"><purpose>Tag type for the unary - operator. </purpose></struct><struct name="dereference"><purpose>Tag type for the unary * operator. </purpose></struct><struct name="complement"><purpose>Tag type for the unary ~ operator. </purpose></struct><struct name="address_of"><purpose>Tag type for the unary &amp; operator. </purpose></struct><struct name="logical_not"><purpose>Tag type for the unary ! operator. </purpose></struct><struct name="pre_inc"><purpose>Tag type for the unary prefix ++ operator. <
/purpose></struct><struct name="pre_dec"><purpose>Tag type for the unary prefix -- operator. </purpose></struct><struct name="post_inc"><purpose>Tag type for the unary postfix ++ operator. </purpose></struct><struct name="post_dec"><purpose>Tag type for the unary postfix -- operator. </purpose></struct><struct name="shift_left"><purpose>Tag type for the binary &lt;&lt; operator. </purpose></struct><struct name="shift_right"><purpose>Tag type for the binary &gt;&gt; operator. </purpose></struct><struct name="multiplies"><purpose>Tag type for the binary * operator. </purpose></struct><struct name="divides"><purpose>Tag type for the binary / operator. </purpose></struct><struct name="modulus"><purpose>Tag type for the binary % operator. </purpose></struct><struct name="plus"><purpose>Tag type for the binary + operator. </purpose></struct><struct name="minus"><purpose>Tag type for the binary - operator. </purpose></struct><struct name="less"><purpose>Tag type for the binary &lt; operator. </purpose></struct><str
uct name="greater"><purpose>Tag type for the binary &gt; operator. </purpose></struct><struct name="less_equal"><purpose>Tag type for the binary &lt;= operator. </purpose></struct><struct name="greater_equal"><purpose>Tag type for the binary &gt;= operator. </purpose></struct><struct name="equal_to"><purpose>Tag type for the binary == operator. </purpose></struct><struct name="not_equal_to"><purpose>Tag type for the binary != operator. </purpose></struct><struct name="logical_or"><purpose>Tag type for the binary || operator. </purpose></struct><struct name="logical_and"><purpose>Tag type for the binary &amp;&amp; operator. </purpose></struct><struct name="bitwise_and"><purpose>Tag type for the binary &amp; operator. </purpose></struct><struct name="bitwise_or"><purpose>Tag type for the binary | operator. </purpose></struct><struct name="bitwise_xor"><purpose>Tag type for the binary ^ operator. </purpose></struct><struct name="comma"><purpose>Tag type for the binary , operator. </purpose></struct><struct name
="mem_ptr"><purpose>Tag type for the binary -&gt;* operator. </purpose></struct><struct name="assign"><purpose>Tag type for the binary = operator. </purpose></struct><struct name="shift_left_assign"><purpose>Tag type for the binary &lt;&lt;= operator. </purpose></struct><struct name="shift_right_assign"><purpose>Tag type for the binary &gt;&gt;= operator. </purpose></struct><struct name="multiplies_assign"><purpose>Tag type for the binary *= operator. </purpose></struct><struct name="divides_assign"><purpose>Tag type for the binary /= operator. </purpose></struct><struct name="modulus_assign"><purpose>Tag type for the binary = operator. </purpose></struct><struct name="plus_assign"><purpose>Tag type for the binary += operator. </purpose></struct><struct name="minus_assign"><purpose>Tag type for the binary -= operator. </purpose></struct><struct name="bitwise_and_assign"><purpose>Tag type for the binary &amp;= operator. </purpose></struct><struct name="bitwise_or_assign"><purpose>Tag type for the binary |= op
erator. </purpose></struct><struct name="bitwise_xor_assign"><purpose>Tag type for the binary ^= operator. </purpose></struct><struct name="subscript"><purpose>Tag type for the binary subscript operator. </purpose></struct><struct name="if_else_"><purpose>Tag type for the ternary ?: conditional operator. </purpose></struct><struct name="function"><purpose>Tag type for the n-ary function call operator. </purpose></struct></namespace></namespace></namespace></header><header name="boost/proto/traits.hpp"><para>Contains definitions for child&lt;&gt;, child_c&lt;&gt;, left&lt;&gt;, right&lt;&gt;, tag_of&lt;&gt;, and the helper functions child(), child_c(), value(), left() and right(). </para><namespace name="boost"><namespace name="proto"><struct name="is_callable"><template>
+ </template><parameter name="a0"><paramtype>A0 const &amp;</paramtype></parameter><parameter name="a1"><paramtype>A1 const &amp;</paramtype></parameter><parameter name="a2"><paramtype>A2 const &amp;</paramtype></parameter><description><para>if_else </para></description></function></namespace></namespace></header><header name="boost/proto/proto.hpp"><para>Includes all of Proto. </para></header><header name="boost/proto/proto_fwd.hpp"><para>Forward declarations of all of proto's public types and functions. </para><namespace name="boost"><namespace name="proto"><struct name="callable"><typedef name="proto_is_callable_"><type>void</type></typedef></struct><namespace name="context"/><namespace name="control"><data-member name="N"><type>int const</type></data-member></namespace><namespace name="exops"/><namespace name="functional"><typedef name="make_terminal"><type><classname>make_expr</classname>&lt; <classname>tag::terminal</classname> &gt;</type></typedef><typedef name="make_unary_plus"><type><classnam
e>make_expr</classname>&lt; <classname>tag::unary_plus</classname> &gt;</type></typedef><typedef name="make_negate"><type><classname>make_expr</classname>&lt; <classname>tag::negate</classname> &gt;</type></typedef><typedef name="make_dereference"><type><classname>make_expr</classname>&lt; <classname>tag::dereference</classname> &gt;</type></typedef><typedef name="make_complement"><type><classname>make_expr</classname>&lt; <classname>tag::complement</classname> &gt;</type></typedef><typedef name="make_address_of"><type><classname>make_expr</classname>&lt; <classname>tag::address_of</classname> &gt;</type></typedef><typedef name="make_logical_not"><type><classname>make_expr</classname>&lt; <classname>tag::logical_not</classname> &gt;</type></typedef><typedef name="make_pre_inc"><type><classname>make_expr</classname>&lt; <classname>tag::pre_inc</classname> &gt;</type></typedef><typedef name="make_pre_dec"><type><classname>make_expr</classname>&lt; <classname>tag::pre_dec</classname> &gt;</type></typedef><typed
ef name="make_post_inc"><type><classname>make_expr</classname>&lt; <classname>tag::post_inc</classname> &gt;</type></typedef><typedef name="make_post_dec"><type><classname>make_expr</classname>&lt; <classname>tag::post_dec</classname> &gt;</type></typedef><typedef name="make_shift_left"><type><classname>make_expr</classname>&lt; <classname>tag::shift_left</classname> &gt;</type></typedef><typedef name="make_shift_right"><type><classname>make_expr</classname>&lt; <classname>tag::shift_right</classname> &gt;</type></typedef><typedef name="make_multiplies"><type><classname>make_expr</classname>&lt; <classname>tag::multiplies</classname> &gt;</type></typedef><typedef name="make_divides"><type><classname>make_expr</classname>&lt; <classname>tag::divides</classname> &gt;</type></typedef><typedef name="make_modulus"><type><classname>make_expr</classname>&lt; <classname>tag::modulus</classname> &gt;</type></typedef><typedef name="make_plus"><type><classname>make_expr</classname>&lt; <classname>tag::plus</classname>
&gt;</type></typedef><typedef name="make_minus"><type><classname>make_expr</classname>&lt; <classname>tag::minus</classname> &gt;</type></typedef><typedef name="make_less"><type><classname>make_expr</classname>&lt; <classname>tag::less</classname> &gt;</type></typedef><typedef name="make_greater"><type><classname>make_expr</classname>&lt; <classname>tag::greater</classname> &gt;</type></typedef><typedef name="make_less_equal"><type><classname>make_expr</classname>&lt; <classname>tag::less_equal</classname> &gt;</type></typedef><typedef name="make_greater_equal"><type><classname>make_expr</classname>&lt; <classname>tag::greater_equal</classname> &gt;</type></typedef><typedef name="make_equal_to"><type><classname>make_expr</classname>&lt; <classname>tag::equal_to</classname> &gt;</type></typedef><typedef name="make_not_equal_to"><type><classname>make_expr</classname>&lt; <classname>tag::not_equal_to</classname> &gt;</type></typedef><typedef name="make_logical_or"><type><classname>make_expr</classname>&lt; <cla
ssname>tag::logical_or</classname> &gt;</type></typedef><typedef name="make_logical_and"><type><classname>make_expr</classname>&lt; <classname>tag::logical_and</classname> &gt;</type></typedef><typedef name="make_bitwise_and"><type><classname>make_expr</classname>&lt; <classname>tag::bitwise_and</classname> &gt;</type></typedef><typedef name="make_bitwise_or"><type><classname>make_expr</classname>&lt; <classname>tag::bitwise_or</classname> &gt;</type></typedef><typedef name="make_bitwise_xor"><type><classname>make_expr</classname>&lt; <classname>tag::bitwise_xor</classname> &gt;</type></typedef><typedef name="make_comma"><type><classname>make_expr</classname>&lt; <classname>tag::comma</classname> &gt;</type></typedef><typedef name="make_mem_ptr"><type><classname>make_expr</classname>&lt; <classname>tag::mem_ptr</classname> &gt;</type></typedef><typedef name="make_assign"><type><classname>make_expr</classname>&lt; <classname>tag::assign</classname> &gt;</type></typedef><typedef name="make_shift_left_assign"><
type><classname>make_expr</classname>&lt; <classname>tag::shift_left_assign</classname> &gt;</type></typedef><typedef name="make_shift_right_assign"><type><classname>make_expr</classname>&lt; <classname>tag::shift_right_assign</classname> &gt;</type></typedef><typedef name="make_multiplies_assign"><type><classname>make_expr</classname>&lt; <classname>tag::multiplies_assign</classname> &gt;</type></typedef><typedef name="make_divides_assign"><type><classname>make_expr</classname>&lt; <classname>tag::divides_assign</classname> &gt;</type></typedef><typedef name="make_modulus_assign"><type><classname>make_expr</classname>&lt; <classname>tag::modulus_assign</classname> &gt;</type></typedef><typedef name="make_plus_assign"><type><classname>make_expr</classname>&lt; <classname>tag::plus_assign</classname> &gt;</type></typedef><typedef name="make_minus_assign"><type><classname>make_expr</classname>&lt; <classname>tag::minus_assign</classname> &gt;</type></typedef><typedef name="make_bitwise_and_assign"><type><class
name>make_expr</classname>&lt; <classname>tag::bitwise_and_assign</classname> &gt;</type></typedef><typedef name="make_bitwise_or_assign"><type><classname>make_expr</classname>&lt; <classname>tag::bitwise_or_assign</classname> &gt;</type></typedef><typedef name="make_bitwise_xor_assign"><type><classname>make_expr</classname>&lt; <classname>tag::bitwise_xor_assign</classname> &gt;</type></typedef><typedef name="make_subscript"><type><classname>make_expr</classname>&lt; <classname>tag::subscript</classname> &gt;</type></typedef><typedef name="make_if_else"><type><classname>make_expr</classname>&lt; <classname>tag::if_else_</classname> &gt;</type></typedef><typedef name="make_function"><type><classname>make_expr</classname>&lt; <classname>tag::function</classname> &gt;</type></typedef></namespace><namespace name="op"/><namespace name="result_of"/><namespace name="tag"/><namespace name="utility"/><typedef name="ignore"><type><emphasis>unspecified</emphasis></type></typedef><typedef name="_flatten"><type><classna
me>functional::flatten</classname></type></typedef><typedef name="_pop_front"><type><classname>functional::pop_front</classname></type></typedef><typedef name="_reverse"><type><classname>functional::reverse</classname></type></typedef><typedef name="_eval"><type><classname>functional::eval</classname></type></typedef><typedef name="_deep_copy"><type><classname>functional::deep_copy</classname></type></typedef><typedef name="_make_terminal"><type><classname>_make_expr</classname>&lt; <classname>tag::terminal</classname> &gt;</type></typedef><typedef name="_make_unary_plus"><type><classname>_make_expr</classname>&lt; <classname>tag::unary_plus</classname> &gt;</type></typedef><typedef name="_make_negate"><type><classname>_make_expr</classname>&lt; <classname>tag::negate</classname> &gt;</type></typedef><typedef name="_make_dereference"><type><classname>_make_expr</classname>&lt; <classname>tag::dereference</classname> &gt;</type></typedef><typedef name="_make_complement"><type><classname>_make_expr</classname>
&lt; <classname>tag::complement</classname> &gt;</type></typedef><typedef name="_make_address_of"><type><classname>_make_expr</classname>&lt; <classname>tag::address_of</classname> &gt;</type></typedef><typedef name="_make_logical_not"><type><classname>_make_expr</classname>&lt; <classname>tag::logical_not</classname> &gt;</type></typedef><typedef name="_make_pre_inc"><type><classname>_make_expr</classname>&lt; <classname>tag::pre_inc</classname> &gt;</type></typedef><typedef name="_make_pre_dec"><type><classname>_make_expr</classname>&lt; <classname>tag::pre_dec</classname> &gt;</type></typedef><typedef name="_make_post_inc"><type><classname>_make_expr</classname>&lt; <classname>tag::post_inc</classname> &gt;</type></typedef><typedef name="_make_post_dec"><type><classname>_make_expr</classname>&lt; <classname>tag::post_dec</classname> &gt;</type></typedef><typedef name="_make_shift_left"><type><classname>_make_expr</classname>&lt; <classname>tag::shift_left</classname> &gt;</type></typedef><typedef name="_m
ake_shift_right"><type><classname>_make_expr</classname>&lt; <classname>tag::shift_right</classname> &gt;</type></typedef><typedef name="_make_multiplies"><type><classname>_make_expr</classname>&lt; <classname>tag::multiplies</classname> &gt;</type></typedef><typedef name="_make_divides"><type><classname>_make_expr</classname>&lt; <classname>tag::divides</classname> &gt;</type></typedef><typedef name="_make_modulus"><type><classname>_make_expr</classname>&lt; <classname>tag::modulus</classname> &gt;</type></typedef><typedef name="_make_plus"><type><classname>_make_expr</classname>&lt; <classname>tag::plus</classname> &gt;</type></typedef><typedef name="_make_minus"><type><classname>_make_expr</classname>&lt; <classname>tag::minus</classname> &gt;</type></typedef><typedef name="_make_less"><type><classname>_make_expr</classname>&lt; <classname>tag::less</classname> &gt;</type></typedef><typedef name="_make_greater"><type><classname>_make_expr</classname>&lt; <classname>tag::greater</classname> &gt;</type></ty
pedef><typedef name="_make_less_equal"><type><classname>_make_expr</classname>&lt; <classname>tag::less_equal</classname> &gt;</type></typedef><typedef name="_make_greater_equal"><type><classname>_make_expr</classname>&lt; <classname>tag::greater_equal</classname> &gt;</type></typedef><typedef name="_make_equal_to"><type><classname>_make_expr</classname>&lt; <classname>tag::equal_to</classname> &gt;</type></typedef><typedef name="_make_not_equal_to"><type><classname>_make_expr</classname>&lt; <classname>tag::not_equal_to</classname> &gt;</type></typedef><typedef name="_make_logical_or"><type><classname>_make_expr</classname>&lt; <classname>tag::logical_or</classname> &gt;</type></typedef><typedef name="_make_logical_and"><type><classname>_make_expr</classname>&lt; <classname>tag::logical_and</classname> &gt;</type></typedef><typedef name="_make_bitwise_and"><type><classname>_make_expr</classname>&lt; <classname>tag::bitwise_and</classname> &gt;</type></typedef><typedef name="_make_bitwise_or"><type><classnam
e>_make_expr</classname>&lt; <classname>tag::bitwise_or</classname> &gt;</type></typedef><typedef name="_make_bitwise_xor"><type><classname>_make_expr</classname>&lt; <classname>tag::bitwise_xor</classname> &gt;</type></typedef><typedef name="_make_comma"><type><classname>_make_expr</classname>&lt; <classname>tag::comma</classname> &gt;</type></typedef><typedef name="_make_mem_ptr"><type><classname>_make_expr</classname>&lt; <classname>tag::mem_ptr</classname> &gt;</type></typedef><typedef name="_make_assign"><type><classname>_make_expr</classname>&lt; <classname>tag::assign</classname> &gt;</type></typedef><typedef name="_make_shift_left_assign"><type><classname>_make_expr</classname>&lt; <classname>tag::shift_left_assign</classname> &gt;</type></typedef><typedef name="_make_shift_right_assign"><type><classname>_make_expr</classname>&lt; <classname>tag::shift_right_assign</classname> &gt;</type></typedef><typedef name="_make_multiplies_assign"><type><classname>_make_expr</classname>&lt; <classname>tag::mult
iplies_assign</classname> &gt;</type></typedef><typedef name="_make_divides_assign"><type><classname>_make_expr</classname>&lt; <classname>tag::divides_assign</classname> &gt;</type></typedef><typedef name="_make_modulus_assign"><type><classname>_make_expr</classname>&lt; <classname>tag::modulus_assign</classname> &gt;</type></typedef><typedef name="_make_plus_assign"><type><classname>_make_expr</classname>&lt; <classname>tag::plus_assign</classname> &gt;</type></typedef><typedef name="_make_minus_assign"><type><classname>_make_expr</classname>&lt; <classname>tag::minus_assign</classname> &gt;</type></typedef><typedef name="_make_bitwise_and_assign"><type><classname>_make_expr</classname>&lt; <classname>tag::bitwise_and_assign</classname> &gt;</type></typedef><typedef name="_make_bitwise_or_assign"><type><classname>_make_expr</classname>&lt; <classname>tag::bitwise_or_assign</classname> &gt;</type></typedef><typedef name="_make_bitwise_xor_assign"><type><classname>_make_expr</classname>&lt; <classname>tag::b
itwise_xor_assign</classname> &gt;</type></typedef><typedef name="_make_subscript"><type><classname>_make_expr</classname>&lt; <classname>tag::subscript</classname> &gt;</type></typedef><typedef name="_make_if_else"><type><classname>_make_expr</classname>&lt; <classname>tag::if_else_</classname> &gt;</type></typedef><typedef name="_make_function"><type><classname>_make_expr</classname>&lt; <classname>tag::function</classname> &gt;</type></typedef><typedef name="_child0"><type><classname>_child_c</classname>&lt; 0 &gt;</type></typedef><typedef name="_child1"><type><classname>_child_c</classname>&lt; 1 &gt;</type></typedef><typedef name="_child"><type><classname>_child0</classname></type></typedef><typedef name="_left"><type><classname>_child0</classname></type></typedef><typedef name="_right"><type><classname>_child1</classname></type></typedef><typedef name="_child2"><type><classname>_child_c</classname>&lt; 2 &gt;</type></typedef><typedef name="_child3"><type><classname>_child_c</classname>&lt; 3 &gt;</type
></typedef></namespace></namespace></header><header name="boost/proto/tags.hpp"><para>Contains the tags for all the overloadable operators in C++ </para><namespace name="boost"><namespace name="proto"><namespace name="tag"><struct name="terminal"><purpose>Tag type for terminals; aka, leaves in the expression tree. </purpose></struct><struct name="unary_plus"><purpose>Tag type for the unary + operator. </purpose></struct><struct name="negate"><purpose>Tag type for the unary - operator. </purpose></struct><struct name="dereference"><purpose>Tag type for the unary * operator. </purpose></struct><struct name="complement"><purpose>Tag type for the unary ~ operator. </purpose></struct><struct name="address_of"><purpose>Tag type for the unary &amp; operator. </purpose></struct><struct name="logical_not"><purpose>Tag type for the unary ! operator. </purpose></struct><struct name="pre_inc"><purpose>Tag type for the unary prefix ++ operator. </purpose></struct><struct name="pre_dec"><purpose>Tag type for the unary pre
fix -- operator. </purpose></struct><struct name="post_inc"><purpose>Tag type for the unary postfix ++ operator. </purpose></struct><struct name="post_dec"><purpose>Tag type for the unary postfix -- operator. </purpose></struct><struct name="shift_left"><purpose>Tag type for the binary &lt;&lt; operator. </purpose></struct><struct name="shift_right"><purpose>Tag type for the binary &gt;&gt; operator. </purpose></struct><struct name="multiplies"><purpose>Tag type for the binary * operator. </purpose></struct><struct name="divides"><purpose>Tag type for the binary / operator. </purpose></struct><struct name="modulus"><purpose>Tag type for the binary % operator. </purpose></struct><struct name="plus"><purpose>Tag type for the binary + operator. </purpose></struct><struct name="minus"><purpose>Tag type for the binary - operator. </purpose></struct><struct name="less"><purpose>Tag type for the binary &lt; operator. </purpose></struct><struct name="greater"><purpose>Tag type for the binary &gt; operator. </purpose
></struct><struct name="less_equal"><purpose>Tag type for the binary &lt;= operator. </purpose></struct><struct name="greater_equal"><purpose>Tag type for the binary &gt;= operator. </purpose></struct><struct name="equal_to"><purpose>Tag type for the binary == operator. </purpose></struct><struct name="not_equal_to"><purpose>Tag type for the binary != operator. </purpose></struct><struct name="logical_or"><purpose>Tag type for the binary || operator. </purpose></struct><struct name="logical_and"><purpose>Tag type for the binary &amp;&amp; operator. </purpose></struct><struct name="bitwise_and"><purpose>Tag type for the binary &amp; operator. </purpose></struct><struct name="bitwise_or"><purpose>Tag type for the binary | operator. </purpose></struct><struct name="bitwise_xor"><purpose>Tag type for the binary ^ operator. </purpose></struct><struct name="comma"><purpose>Tag type for the binary , operator. </purpose></struct><struct name="mem_ptr"><purpose>Tag type for the binary -&gt;* operator. </purpose></str
uct><struct name="assign"><purpose>Tag type for the binary = operator. </purpose></struct><struct name="shift_left_assign"><purpose>Tag type for the binary &lt;&lt;= operator. </purpose></struct><struct name="shift_right_assign"><purpose>Tag type for the binary &gt;&gt;= operator. </purpose></struct><struct name="multiplies_assign"><purpose>Tag type for the binary *= operator. </purpose></struct><struct name="divides_assign"><purpose>Tag type for the binary /= operator. </purpose></struct><struct name="modulus_assign"><purpose>Tag type for the binary = operator. </purpose></struct><struct name="plus_assign"><purpose>Tag type for the binary += operator. </purpose></struct><struct name="minus_assign"><purpose>Tag type for the binary -= operator. </purpose></struct><struct name="bitwise_and_assign"><purpose>Tag type for the binary &amp;= operator. </purpose></struct><struct name="bitwise_or_assign"><purpose>Tag type for the binary |= operator. </purpose></struct><struct name="bitwise_xor_assign"><purpose>Tag ty
pe for the binary ^= operator. </purpose></struct><struct name="subscript"><purpose>Tag type for the binary subscript operator. </purpose></struct><struct name="member"><purpose>Tag type for the binary virtual data members. </purpose></struct><struct name="if_else_"><purpose>Tag type for the ternary ?: conditional operator. </purpose></struct><struct name="function"><purpose>Tag type for the n-ary function call operator. </purpose></struct></namespace></namespace></namespace></header><header name="boost/proto/traits.hpp"><para>Contains definitions for child&lt;&gt;, child_c&lt;&gt;, left&lt;&gt;, right&lt;&gt;, tag_of&lt;&gt;, and the helper functions child(), child_c(), value(), left() and right(). </para><namespace name="boost"><namespace name="proto"><struct name="is_callable"><template>
       <template-type-parameter name="T"/>
     </template><purpose>Boolean metafunction which detects whether a type is a callable function object type or not. </purpose><description><para><computeroutput>is_callable&lt;&gt;</computeroutput> is used by the <computeroutput>when&lt;&gt;</computeroutput> transform to determine whether a function type <computeroutput>R(A1,A2,...AN)</computeroutput> is a callable transform or an object transform. (The former are evaluated using <computeroutput>call&lt;&gt;</computeroutput> and the later with <computeroutput>make&lt;&gt;</computeroutput>.) If <computeroutput>is_callable&lt;R&gt;::value</computeroutput> is <computeroutput>true</computeroutput>, the function type is a callable transform; otherwise, it is an object transform.</para><para>Unless specialized for a type <computeroutput>T</computeroutput>, <computeroutput>is_callable&lt;T&gt;::value</computeroutput> is computed as follows:</para><para><itemizedlist>
 <listitem><para>If <computeroutput>T</computeroutput> is a template type <computeroutput>X&lt;Y0,Y1,...YN&gt;</computeroutput>, where all <computeroutput>Yx</computeroutput> are types for <computeroutput>x</computeroutput> in <computeroutput>[0,N]</computeroutput>, <computeroutput>is_callable&lt;T&gt;::value</computeroutput> is <computeroutput>is_same&lt;YN, proto::callable&gt;::value</computeroutput>. </para></listitem>
@@ -1969,11 +2025,12 @@
 </itemizedlist>
 </para></description></struct><struct name="is_aggregate"><template>
       <template-type-parameter name="T"/>
+ <template-type-parameter name="Void"/>
     </template><purpose>A Boolean metafunction that indicates whether a type requires aggregate initialization. </purpose><description><para><computeroutput>is_aggregate&lt;&gt;</computeroutput> is used by the <computeroutput>make&lt;&gt;</computeroutput> transform to determine how to construct an object of some type <computeroutput>T</computeroutput>, given some initialization arguments <computeroutput>a0,a1,...aN</computeroutput>. If <computeroutput>is_aggregate&lt;T&gt;::value</computeroutput> is <computeroutput>true</computeroutput>, then an object of type T will be initialized as <computeroutput>T t = {a0,a1,...aN};</computeroutput>. Otherwise, it will be initialized as <computeroutput>T t(a0,a1,...aN)</computeroutput>. </para></description></struct><struct-specialization name="is_aggregate"><template>
       <template-type-parameter name="Tag"/>
       <template-type-parameter name="Args"/>
       <template-nontype-parameter name="N"><type>long</type></template-nontype-parameter>
- </template><specialization><template-arg>proto::expr&lt; Tag</template-arg><template-arg>Args</template-arg><template-arg>N &gt;</template-arg></specialization><inherit access="public">boost::mpl::true_</inherit><purpose>Specialization of <computeroutput>is_aggregate&lt;&gt;</computeroutput> that indicates that objects of <computeroutput>expr&lt;&gt;</computeroutput> type require aggregate initialization. </purpose></struct-specialization><struct name="is_transform"><template>
+ </template><specialization><template-arg>proto::expr&lt; Tag</template-arg><template-arg>Args</template-arg><template-arg>N &gt;</template-arg><template-arg>void</template-arg></specialization><inherit access="public">boost::mpl::true_</inherit><purpose>Specialization of <computeroutput>is_aggregate&lt;&gt;</computeroutput> that indicates that objects of <computeroutput>expr&lt;&gt;</computeroutput> type require aggregate initialization. </purpose></struct-specialization><struct name="is_transform"><template>
       <template-type-parameter name="T"/>
       <template-type-parameter name="Void"><default>void</default></template-type-parameter>
     </template><inherit access="public">boost::mpl::false_</inherit><purpose>TODO document me! </purpose></struct><struct-specialization name="is_transform"><template>
@@ -2061,11 +2118,11 @@
           <template-type-parameter name="Expr"/>
         </template><parameter name="expr"><paramtype>Expr const &amp;</paramtype></parameter></method></method-group></struct></namespace><namespace name="op"><struct name="terminal"><template>
       <template-type-parameter name="T"/>
- </template><purpose>A metafunction for generating terminal expression types, a grammar element for matching terminal expressions, and a PrimitiveTransform that returns the current expression unchanged. </purpose><struct name="impl"><template>
+ </template><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>A metafunction for generating terminal expression types, a grammar element for matching terminal expressions, and a PrimitiveTransform 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><typedef name="result_type"><type>Expr</type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>impl::expr_param</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><description><para>
+ </template><inherit access="public">boost::proto::transform_impl&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>impl::expr_param</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><description><para>
 
 
 
@@ -2073,14 +2130,14 @@
       <template-type-parameter name="T"/>
       <template-type-parameter name="U"/>
       <template-type-parameter name="V"/>
- </template><purpose>A metafunction for generating ternary conditional expression types, a grammar element for matching ternary conditional expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
+ </template><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>A metafunction for generating ternary conditional expression types, a grammar element for matching ternary conditional expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
     </template></struct><typedef name="type"><type>proto::expr&lt; <classname>proto::tag::if_else_</classname>, <classname>list3</classname>&lt; T, U, V &gt; &gt;</type></typedef><typedef name="proto_base_expr"><type>type</type></typedef></struct><struct name="unary_expr"><template>
       <template-type-parameter name="Tag"/>
       <template-type-parameter name="T"/>
- </template><purpose>A metafunction for generating unary expression types with a specified tag type, a grammar element for matching unary expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><description><para>Use <computeroutput>unary_expr&lt;_, _&gt;</computeroutput> as a grammar element to match any unary expression. </para></description><struct name="impl"><template>
+ </template><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>A metafunction for generating unary expression types with a specified tag type, a grammar element for matching unary expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><description><para>Use <computeroutput>unary_expr&lt;_, _&gt;</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"/>
@@ -2088,311 +2145,318 @@
       <template-type-parameter name="Tag"/>
       <template-type-parameter name="T"/>
       <template-type-parameter name="U"/>
- </template><purpose>A metafunction for generating binary expression types with a specified tag type, a grammar element for matching binary expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><description><para>Use <computeroutput>binary_expr&lt;_, _, _&gt;</computeroutput> as a grammar element to match any binary expression. </para></description><struct name="impl"><template>
+ </template><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>A metafunction for generating binary expression types with a specified tag type, a grammar element for matching binary expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><description><para>Use <computeroutput>binary_expr&lt;_, _, _&gt;</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></struct><typedef name="type"><type>proto::expr&lt; Tag, <classname>list2</classname>&lt; T, U &gt; &gt;</type></typedef><typedef name="proto_base_expr"><type>type</type></typedef></struct><struct name="unary_plus"><template>
       <template-type-parameter name="T"/>
- </template><purpose>A metafunction for generating unary plus expression types, a grammar element for matching unary plus expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
+ </template><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>A metafunction for generating unary plus expression types, a grammar element for matching unary plus expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
     </template></struct><typedef name="type"><type>proto::expr&lt; <classname>proto::tag::unary_plus</classname>, <classname>list1</classname>&lt; T &gt; &gt;</type></typedef><typedef name="proto_base_expr"><type>type</type></typedef></struct><struct name="negate"><template>
       <template-type-parameter name="T"/>
- </template><purpose>A metafunction for generating unary minus expression types, a grammar element for matching unary minus expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
+ </template><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>A metafunction for generating unary minus expression types, a grammar element for matching unary minus expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
     </template></struct><typedef name="type"><type>proto::expr&lt; <classname>proto::tag::negate</classname>, <classname>list1</classname>&lt; T &gt; &gt;</type></typedef><typedef name="proto_base_expr"><type>type</type></typedef></struct><struct name="dereference"><template>
       <template-type-parameter name="T"/>
- </template><purpose>A metafunction for generating defereference expression types, a grammar element for matching dereference expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
+ </template><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>A metafunction for generating defereference expression types, a grammar element for matching dereference expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
     </template></struct><typedef name="type"><type>proto::expr&lt; <classname>proto::tag::dereference</classname>, <classname>list1</classname>&lt; T &gt; &gt;</type></typedef><typedef name="proto_base_expr"><type>type</type></typedef></struct><struct name="complement"><template>
       <template-type-parameter name="T"/>
- </template><purpose>A metafunction for generating complement expression types, a grammar element for matching complement expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
+ </template><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>A metafunction for generating complement expression types, a grammar element for matching complement expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
     </template></struct><typedef name="type"><type>proto::expr&lt; <classname>proto::tag::complement</classname>, <classname>list1</classname>&lt; T &gt; &gt;</type></typedef><typedef name="proto_base_expr"><type>type</type></typedef></struct><struct name="address_of"><template>
       <template-type-parameter name="T"/>
- </template><purpose>A metafunction for generating address_of expression types, a grammar element for matching address_of expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
+ </template><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>A metafunction for generating address_of expression types, a grammar element for matching address_of expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
     </template></struct><typedef name="type"><type>proto::expr&lt; <classname>proto::tag::address_of</classname>, <classname>list1</classname>&lt; T &gt; &gt;</type></typedef><typedef name="proto_base_expr"><type>type</type></typedef></struct><struct name="logical_not"><template>
       <template-type-parameter name="T"/>
- </template><purpose>A metafunction for generating logical_not expression types, a grammar element for matching logical_not expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
+ </template><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>A metafunction for generating logical_not expression types, a grammar element for matching logical_not expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
     </template></struct><typedef name="type"><type>proto::expr&lt; <classname>proto::tag::logical_not</classname>, <classname>list1</classname>&lt; T &gt; &gt;</type></typedef><typedef name="proto_base_expr"><type>type</type></typedef></struct><struct name="pre_inc"><template>
       <template-type-parameter name="T"/>
- </template><purpose>A metafunction for generating pre-increment expression types, a grammar element for matching pre-increment expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
+ </template><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>A metafunction for generating pre-increment expression types, a grammar element for matching pre-increment expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
     </template></struct><typedef name="type"><type>proto::expr&lt; <classname>proto::tag::pre_inc</classname>, <classname>list1</classname>&lt; T &gt; &gt;</type></typedef><typedef name="proto_base_expr"><type>type</type></typedef></struct><struct name="pre_dec"><template>
       <template-type-parameter name="T"/>
- </template><purpose>A metafunction for generating pre-decrement expression types, a grammar element for matching pre-decrement expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
+ </template><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>A metafunction for generating pre-decrement expression types, a grammar element for matching pre-decrement expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
     </template></struct><typedef name="type"><type>proto::expr&lt; <classname>proto::tag::pre_dec</classname>, <classname>list1</classname>&lt; T &gt; &gt;</type></typedef><typedef name="proto_base_expr"><type>type</type></typedef></struct><struct name="post_inc"><template>
       <template-type-parameter name="T"/>
- </template><purpose>A metafunction for generating post-increment expression types, a grammar element for matching post-increment expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
+ </template><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>A metafunction for generating post-increment expression types, a grammar element for matching post-increment expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
     </template></struct><typedef name="type"><type>proto::expr&lt; <classname>proto::tag::post_inc</classname>, <classname>list1</classname>&lt; T &gt; &gt;</type></typedef><typedef name="proto_base_expr"><type>type</type></typedef></struct><struct name="post_dec"><template>
       <template-type-parameter name="T"/>
- </template><purpose>A metafunction for generating post-decrement expression types, a grammar element for matching post-decrement expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
+ </template><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>A metafunction for generating post-decrement expression types, a grammar element for matching post-decrement expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
     </template></struct><typedef name="type"><type>proto::expr&lt; <classname>proto::tag::post_dec</classname>, <classname>list1</classname>&lt; T &gt; &gt;</type></typedef><typedef name="proto_base_expr"><type>type</type></typedef></struct><struct name="shift_left"><template>
       <template-type-parameter name="T"/>
       <template-type-parameter name="U"/>
- </template><purpose>A metafunction for generating left-shift expression types, a grammar element for matching left-shift expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
+ </template><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>A metafunction for generating left-shift expression types, a grammar element for matching left-shift expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
     </template></struct><typedef name="type"><type>proto::expr&lt; <classname>proto::tag::shift_left</classname>, <classname>list2</classname>&lt; T, U &gt; &gt;</type></typedef><typedef name="proto_base_expr"><type>type</type></typedef></struct><struct name="shift_right"><template>
       <template-type-parameter name="T"/>
       <template-type-parameter name="U"/>
- </template><purpose>A metafunction for generating right-shift expression types, a grammar element for matching right-shift expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
+ </template><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>A metafunction for generating right-shift expression types, a grammar element for matching right-shift expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
     </template></struct><typedef name="type"><type>proto::expr&lt; <classname>proto::tag::shift_right</classname>, <classname>list2</classname>&lt; T, U &gt; &gt;</type></typedef><typedef name="proto_base_expr"><type>type</type></typedef></struct><struct name="multiplies"><template>
       <template-type-parameter name="T"/>
       <template-type-parameter name="U"/>
- </template><purpose>A metafunction for generating multiplies expression types, a grammar element for matching multiplies expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
+ </template><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>A metafunction for generating multiplies expression types, a grammar element for matching multiplies expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
     </template></struct><typedef name="type"><type>proto::expr&lt; <classname>proto::tag::multiplies</classname>, <classname>list2</classname>&lt; T, U &gt; &gt;</type></typedef><typedef name="proto_base_expr"><type>type</type></typedef></struct><struct name="divides"><template>
       <template-type-parameter name="T"/>
       <template-type-parameter name="U"/>
- </template><purpose>A metafunction for generating divides expression types, a grammar element for matching divides expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
+ </template><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>A metafunction for generating divides expression types, a grammar element for matching divides expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
     </template></struct><typedef name="type"><type>proto::expr&lt; <classname>proto::tag::divides</classname>, <classname>list2</classname>&lt; T, U &gt; &gt;</type></typedef><typedef name="proto_base_expr"><type>type</type></typedef></struct><struct name="modulus"><template>
       <template-type-parameter name="T"/>
       <template-type-parameter name="U"/>
- </template><purpose>A metafunction for generating modulus expression types, a grammar element for matching modulus expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
+ </template><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>A metafunction for generating modulus expression types, a grammar element for matching modulus expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
     </template></struct><typedef name="type"><type>proto::expr&lt; <classname>proto::tag::modulus</classname>, <classname>list2</classname>&lt; T, U &gt; &gt;</type></typedef><typedef name="proto_base_expr"><type>type</type></typedef></struct><struct name="plus"><template>
       <template-type-parameter name="T"/>
       <template-type-parameter name="U"/>
- </template><purpose>A metafunction for generating binary plus expression types, a grammar element for matching binary plus expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
+ </template><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>A metafunction for generating binary plus expression types, a grammar element for matching binary plus expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
     </template></struct><typedef name="type"><type>proto::expr&lt; <classname>proto::tag::plus</classname>, <classname>list2</classname>&lt; T, U &gt; &gt;</type></typedef><typedef name="proto_base_expr"><type>type</type></typedef></struct><struct name="minus"><template>
       <template-type-parameter name="T"/>
       <template-type-parameter name="U"/>
- </template><purpose>A metafunction for generating binary minus expression types, a grammar element for matching binary minus expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
+ </template><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>A metafunction for generating binary minus expression types, a grammar element for matching binary minus expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
     </template></struct><typedef name="type"><type>proto::expr&lt; <classname>proto::tag::minus</classname>, <classname>list2</classname>&lt; T, U &gt; &gt;</type></typedef><typedef name="proto_base_expr"><type>type</type></typedef></struct><struct name="less"><template>
       <template-type-parameter name="T"/>
       <template-type-parameter name="U"/>
- </template><purpose>A metafunction for generating less expression types, a grammar element for matching less expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
+ </template><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>A metafunction for generating less expression types, a grammar element for matching less expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
     </template></struct><typedef name="type"><type>proto::expr&lt; <classname>proto::tag::less</classname>, <classname>list2</classname>&lt; T, U &gt; &gt;</type></typedef><typedef name="proto_base_expr"><type>type</type></typedef></struct><struct name="greater"><template>
       <template-type-parameter name="T"/>
       <template-type-parameter name="U"/>
- </template><purpose>A metafunction for generating greater expression types, a grammar element for matching greater expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
+ </template><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>A metafunction for generating greater expression types, a grammar element for matching greater expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
     </template></struct><typedef name="type"><type>proto::expr&lt; <classname>proto::tag::greater</classname>, <classname>list2</classname>&lt; T, U &gt; &gt;</type></typedef><typedef name="proto_base_expr"><type>type</type></typedef></struct><struct name="less_equal"><template>
       <template-type-parameter name="T"/>
       <template-type-parameter name="U"/>
- </template><purpose>A metafunction for generating less-or-equal expression types, a grammar element for matching less-or-equal expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
+ </template><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>A metafunction for generating less-or-equal expression types, a grammar element for matching less-or-equal expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
     </template></struct><typedef name="type"><type>proto::expr&lt; <classname>proto::tag::less_equal</classname>, <classname>list2</classname>&lt; T, U &gt; &gt;</type></typedef><typedef name="proto_base_expr"><type>type</type></typedef></struct><struct name="greater_equal"><template>
       <template-type-parameter name="T"/>
       <template-type-parameter name="U"/>
- </template><purpose>A metafunction for generating greater-or-equal expression types, a grammar element for matching greater-or-equal expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
+ </template><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>A metafunction for generating greater-or-equal expression types, a grammar element for matching greater-or-equal expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
     </template></struct><typedef name="type"><type>proto::expr&lt; <classname>proto::tag::greater_equal</classname>, <classname>list2</classname>&lt; T, U &gt; &gt;</type></typedef><typedef name="proto_base_expr"><type>type</type></typedef></struct><struct name="equal_to"><template>
       <template-type-parameter name="T"/>
       <template-type-parameter name="U"/>
- </template><purpose>A metafunction for generating equal-to expression types, a grammar element for matching equal-to expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
+ </template><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>A metafunction for generating equal-to expression types, a grammar element for matching equal-to expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
     </template></struct><typedef name="type"><type>proto::expr&lt; <classname>proto::tag::equal_to</classname>, <classname>list2</classname>&lt; T, U &gt; &gt;</type></typedef><typedef name="proto_base_expr"><type>type</type></typedef></struct><struct name="not_equal_to"><template>
       <template-type-parameter name="T"/>
       <template-type-parameter name="U"/>
- </template><purpose>A metafunction for generating not-equal-to expression types, a grammar element for matching not-equal-to expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
+ </template><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>A metafunction for generating not-equal-to expression types, a grammar element for matching not-equal-to expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
     </template></struct><typedef name="type"><type>proto::expr&lt; <classname>proto::tag::not_equal_to</classname>, <classname>list2</classname>&lt; T, U &gt; &gt;</type></typedef><typedef name="proto_base_expr"><type>type</type></typedef></struct><struct name="logical_or"><template>
       <template-type-parameter name="T"/>
       <template-type-parameter name="U"/>
- </template><purpose>A metafunction for generating logical-or expression types, a grammar element for matching logical-or expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
+ </template><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>A metafunction for generating logical-or expression types, a grammar element for matching logical-or expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
     </template></struct><typedef name="type"><type>proto::expr&lt; <classname>proto::tag::logical_or</classname>, <classname>list2</classname>&lt; T, U &gt; &gt;</type></typedef><typedef name="proto_base_expr"><type>type</type></typedef></struct><struct name="logical_and"><template>
       <template-type-parameter name="T"/>
       <template-type-parameter name="U"/>
- </template><purpose>A metafunction for generating logical-and expression types, a grammar element for matching logical-and expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
+ </template><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>A metafunction for generating logical-and expression types, a grammar element for matching logical-and expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
     </template></struct><typedef name="type"><type>proto::expr&lt; <classname>proto::tag::logical_and</classname>, <classname>list2</classname>&lt; T, U &gt; &gt;</type></typedef><typedef name="proto_base_expr"><type>type</type></typedef></struct><struct name="bitwise_and"><template>
       <template-type-parameter name="T"/>
       <template-type-parameter name="U"/>
- </template><purpose>A metafunction for generating bitwise-and expression types, a grammar element for matching bitwise-and expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
+ </template><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>A metafunction for generating bitwise-and expression types, a grammar element for matching bitwise-and expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
     </template></struct><typedef name="type"><type>proto::expr&lt; <classname>proto::tag::bitwise_and</classname>, <classname>list2</classname>&lt; T, U &gt; &gt;</type></typedef><typedef name="proto_base_expr"><type>type</type></typedef></struct><struct name="bitwise_or"><template>
       <template-type-parameter name="T"/>
       <template-type-parameter name="U"/>
- </template><purpose>A metafunction for generating bitwise-or expression types, a grammar element for matching bitwise-or expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
+ </template><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>A metafunction for generating bitwise-or expression types, a grammar element for matching bitwise-or expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
     </template></struct><typedef name="type"><type>proto::expr&lt; <classname>proto::tag::bitwise_or</classname>, <classname>list2</classname>&lt; T, U &gt; &gt;</type></typedef><typedef name="proto_base_expr"><type>type</type></typedef></struct><struct name="bitwise_xor"><template>
       <template-type-parameter name="T"/>
       <template-type-parameter name="U"/>
- </template><purpose>A metafunction for generating bitwise-xor expression types, a grammar element for matching bitwise-xor expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
+ </template><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>A metafunction for generating bitwise-xor expression types, a grammar element for matching bitwise-xor expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
     </template></struct><typedef name="type"><type>proto::expr&lt; <classname>proto::tag::bitwise_xor</classname>, <classname>list2</classname>&lt; T, U &gt; &gt;</type></typedef><typedef name="proto_base_expr"><type>type</type></typedef></struct><struct name="comma"><template>
       <template-type-parameter name="T"/>
       <template-type-parameter name="U"/>
- </template><purpose>A metafunction for generating comma expression types, a grammar element for matching comma expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
+ </template><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>A metafunction for generating comma expression types, a grammar element for matching comma expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
     </template></struct><typedef name="type"><type>proto::expr&lt; <classname>proto::tag::comma</classname>, <classname>list2</classname>&lt; T, U &gt; &gt;</type></typedef><typedef name="proto_base_expr"><type>type</type></typedef></struct><struct name="mem_ptr"><template>
       <template-type-parameter name="T"/>
       <template-type-parameter name="U"/>
- </template><struct name="impl"><template>
+ </template><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><struct name="impl"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
     </template></struct><typedef name="type"><type>proto::expr&lt; <classname>proto::tag::mem_ptr</classname>, <classname>list2</classname>&lt; T, U &gt; &gt;</type></typedef><typedef name="proto_base_expr"><type>type</type></typedef></struct><struct name="assign"><template>
       <template-type-parameter name="T"/>
       <template-type-parameter name="U"/>
- </template><purpose>A metafunction for generating assignment expression types, a grammar element for matching assignment expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
+ </template><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>A metafunction for generating assignment expression types, a grammar element for matching assignment expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
     </template></struct><typedef name="type"><type>proto::expr&lt; <classname>proto::tag::assign</classname>, <classname>list2</classname>&lt; T, U &gt; &gt;</type></typedef><typedef name="proto_base_expr"><type>type</type></typedef></struct><struct name="shift_left_assign"><template>
       <template-type-parameter name="T"/>
       <template-type-parameter name="U"/>
- </template><purpose>A metafunction for generating left-shift-assign expression types, a grammar element for matching left-shift-assign expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
+ </template><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>A metafunction for generating left-shift-assign expression types, a grammar element for matching left-shift-assign expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
     </template></struct><typedef name="type"><type>proto::expr&lt; <classname>proto::tag::shift_left_assign</classname>, <classname>list2</classname>&lt; T, U &gt; &gt;</type></typedef><typedef name="proto_base_expr"><type>type</type></typedef></struct><struct name="shift_right_assign"><template>
       <template-type-parameter name="T"/>
       <template-type-parameter name="U"/>
- </template><purpose>A metafunction for generating right-shift-assign expression types, a grammar element for matching right-shift-assign expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
+ </template><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>A metafunction for generating right-shift-assign expression types, a grammar element for matching right-shift-assign expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
     </template></struct><typedef name="type"><type>proto::expr&lt; <classname>proto::tag::shift_right_assign</classname>, <classname>list2</classname>&lt; T, U &gt; &gt;</type></typedef><typedef name="proto_base_expr"><type>type</type></typedef></struct><struct name="multiplies_assign"><template>
       <template-type-parameter name="T"/>
       <template-type-parameter name="U"/>
- </template><purpose>A metafunction for generating multiplies-assign expression types, a grammar element for matching multiplies-assign expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
+ </template><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>A metafunction for generating multiplies-assign expression types, a grammar element for matching multiplies-assign expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
     </template></struct><typedef name="type"><type>proto::expr&lt; <classname>proto::tag::multiplies_assign</classname>, <classname>list2</classname>&lt; T, U &gt; &gt;</type></typedef><typedef name="proto_base_expr"><type>type</type></typedef></struct><struct name="divides_assign"><template>
       <template-type-parameter name="T"/>
       <template-type-parameter name="U"/>
- </template><purpose>A metafunction for generating divides-assign expression types, a grammar element for matching divides-assign expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
+ </template><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>A metafunction for generating divides-assign expression types, a grammar element for matching divides-assign expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
     </template></struct><typedef name="type"><type>proto::expr&lt; <classname>proto::tag::divides_assign</classname>, <classname>list2</classname>&lt; T, U &gt; &gt;</type></typedef><typedef name="proto_base_expr"><type>type</type></typedef></struct><struct name="modulus_assign"><template>
       <template-type-parameter name="T"/>
       <template-type-parameter name="U"/>
- </template><purpose>A metafunction for generating modulus-assign expression types, a grammar element for matching modulus-assign expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
+ </template><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>A metafunction for generating modulus-assign expression types, a grammar element for matching modulus-assign expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
     </template></struct><typedef name="type"><type>proto::expr&lt; <classname>proto::tag::modulus_assign</classname>, <classname>list2</classname>&lt; T, U &gt; &gt;</type></typedef><typedef name="proto_base_expr"><type>type</type></typedef></struct><struct name="plus_assign"><template>
       <template-type-parameter name="T"/>
       <template-type-parameter name="U"/>
- </template><purpose>A metafunction for generating plus-assign expression types, a grammar element for matching plus-assign expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
+ </template><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>A metafunction for generating plus-assign expression types, a grammar element for matching plus-assign expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
     </template></struct><typedef name="type"><type>proto::expr&lt; <classname>proto::tag::plus_assign</classname>, <classname>list2</classname>&lt; T, U &gt; &gt;</type></typedef><typedef name="proto_base_expr"><type>type</type></typedef></struct><struct name="minus_assign"><template>
       <template-type-parameter name="T"/>
       <template-type-parameter name="U"/>
- </template><purpose>A metafunction for generating minus-assign expression types, a grammar element for matching minus-assign expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
+ </template><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>A metafunction for generating minus-assign expression types, a grammar element for matching minus-assign expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
     </template></struct><typedef name="type"><type>proto::expr&lt; <classname>proto::tag::minus_assign</classname>, <classname>list2</classname>&lt; T, U &gt; &gt;</type></typedef><typedef name="proto_base_expr"><type>type</type></typedef></struct><struct name="bitwise_and_assign"><template>
       <template-type-parameter name="T"/>
       <template-type-parameter name="U"/>
- </template><purpose>A metafunction for generating bitwise-and-assign expression types, a grammar element for matching bitwise-and-assign expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
+ </template><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>A metafunction for generating bitwise-and-assign expression types, a grammar element for matching bitwise-and-assign expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
     </template></struct><typedef name="type"><type>proto::expr&lt; <classname>proto::tag::bitwise_and_assign</classname>, <classname>list2</classname>&lt; T, U &gt; &gt;</type></typedef><typedef name="proto_base_expr"><type>type</type></typedef></struct><struct name="bitwise_or_assign"><template>
       <template-type-parameter name="T"/>
       <template-type-parameter name="U"/>
- </template><purpose>A metafunction for generating bitwise-or-assign expression types, a grammar element for matching bitwise-or-assign expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
+ </template><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>A metafunction for generating bitwise-or-assign expression types, a grammar element for matching bitwise-or-assign expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
     </template></struct><typedef name="type"><type>proto::expr&lt; <classname>proto::tag::bitwise_or_assign</classname>, <classname>list2</classname>&lt; T, U &gt; &gt;</type></typedef><typedef name="proto_base_expr"><type>type</type></typedef></struct><struct name="bitwise_xor_assign"><template>
       <template-type-parameter name="T"/>
       <template-type-parameter name="U"/>
- </template><purpose>A metafunction for generating bitwise-xor-assign expression types, a grammar element for matching bitwise-xor-assign expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
+ </template><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>A metafunction for generating bitwise-xor-assign expression types, a grammar element for matching bitwise-xor-assign expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
     </template></struct><typedef name="type"><type>proto::expr&lt; <classname>proto::tag::bitwise_xor_assign</classname>, <classname>list2</classname>&lt; T, U &gt; &gt;</type></typedef><typedef name="proto_base_expr"><type>type</type></typedef></struct><struct name="subscript"><template>
       <template-type-parameter name="T"/>
       <template-type-parameter name="U"/>
- </template><purpose>A metafunction for generating subscript expression types, a grammar element for matching subscript expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
+ </template><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>A metafunction for generating subscript expression types, a grammar element for matching subscript expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
+ <template-type-parameter name="Expr"/>
+ <template-type-parameter name="State"/>
+ <template-type-parameter name="Data"/>
+ </template></struct><typedef name="type"><type>proto::expr&lt; <classname>proto::tag::subscript</classname>, <classname>list2</classname>&lt; T, U &gt; &gt;</type></typedef><typedef name="proto_base_expr"><type>type</type></typedef></struct><struct name="member"><template>
+ <template-type-parameter name="T"/>
+ <template-type-parameter name="U"/>
+ </template><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>A metafunction for generating virtual data member expression types, a grammar element for matching member expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template></struct><typedef name="type"><type>proto::expr&lt; <classname>proto::tag::subscript</classname>, <classname>list2</classname>&lt; T, U &gt; &gt;</type></typedef><typedef name="proto_base_expr"><type>type</type></typedef></struct><struct-specialization name="function"><template>
+ </template></struct><typedef name="type"><type>expr&lt; <classname>tag::member</classname>, <classname>list2</classname>&lt; T, U &gt; &gt;</type></typedef><typedef name="proto_base_expr"><type>type</type></typedef></struct><struct-specialization name="function"><template>
       <template-type-parameter name="A0"/>
- </template><specialization><template-arg>A0</template-arg><template-arg>void</template-arg><template-arg>void</template-arg><template-arg>void</template-arg><template-arg>void</template-arg><template-arg>void</template-arg></specialization><purpose>A metafunction for generating function-call expression types, a grammar element for matching function-call expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
+ </template><specialization><template-arg>A0</template-arg><template-arg>void</template-arg><template-arg>void</template-arg><template-arg>void</template-arg><template-arg>void</template-arg><template-arg>void</template-arg></specialization><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>A metafunction for generating function-call expression types, a grammar element for matching function-call expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
     </template></struct><typedef name="type"><type>proto::expr&lt; <classname>proto::tag::function</classname>, <classname>list1</classname>&lt; A0 &gt; &gt;</type></typedef><typedef name="proto_base_expr"><type>type</type></typedef><typedef name="proto_child0"><type>A0</type></typedef><typedef name="proto_child1"><type><emphasis>unspecified</emphasis></type></typedef><typedef name="proto_child2"><type><emphasis>unspecified</emphasis></type></typedef><typedef name="proto_child3"><type><emphasis>unspecified</emphasis></type></typedef><typedef name="proto_child4"><type><emphasis>unspecified</emphasis></type></typedef></struct-specialization><struct-specialization name="nary_expr"><template>
       <template-type-parameter name="Tag"/>
       <template-type-parameter name="A0"/>
- </template><specialization><template-arg>Tag</template-arg><template-arg>A0</template-arg><template-arg>void</template-arg><template-arg>void</template-arg><template-arg>void</template-arg><template-arg>void</template-arg><template-arg>void</template-arg></specialization><purpose>A metafunction for generating n-ary expression types with a specified tag type, a grammar element for matching n-ary expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><description><para>Use <computeroutput>nary_expr&lt;_, vararg&lt;_&gt; &gt;</computeroutput> as a grammar element to match any n-ary expression; that is, any non-terminal. </para></description><struct name="impl"><template>
+ </template><specialization><template-arg>Tag</template-arg><template-arg>A0</template-arg><template-arg>void</template-arg><template-arg>void</template-arg><template-arg>void</template-arg><template-arg>void</template-arg><template-arg>void</template-arg></specialization><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</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 PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><description><para>Use <computeroutput>nary_expr&lt;_, vararg&lt;_&gt; &gt;</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></struct><typedef name="type"><type>proto::expr&lt; Tag, <classname>list1</classname>&lt; A0 &gt; &gt;</type></typedef><typedef name="proto_base_expr"><type>type</type></typedef><typedef name="proto_child0"><type>A0</type></typedef><typedef name="proto_child1"><type><emphasis>unspecified</emphasis></type></typedef><typedef name="proto_child2"><type><emphasis>unspecified</emphasis></type></typedef><typedef name="proto_child3"><type><emphasis>unspecified</emphasis></type></typedef><typedef name="proto_child4"><type><emphasis>unspecified</emphasis></type></typedef></struct-specialization><struct-specialization name="function"><template>
       <template-type-parameter name="A0"/>
       <template-type-parameter name="A1"/>
- </template><specialization><template-arg>A0</template-arg><template-arg>A1</template-arg><template-arg>void</template-arg><template-arg>void</template-arg><template-arg>void</template-arg><template-arg>void</template-arg></specialization><purpose>A metafunction for generating function-call expression types, a grammar element for matching function-call expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
+ </template><specialization><template-arg>A0</template-arg><template-arg>A1</template-arg><template-arg>void</template-arg><template-arg>void</template-arg><template-arg>void</template-arg><template-arg>void</template-arg></specialization><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>A metafunction for generating function-call expression types, a grammar element for matching function-call expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
@@ -2400,7 +2464,7 @@
       <template-type-parameter name="Tag"/>
       <template-type-parameter name="A0"/>
       <template-type-parameter name="A1"/>
- </template><specialization><template-arg>Tag</template-arg><template-arg>A0</template-arg><template-arg>A1</template-arg><template-arg>void</template-arg><template-arg>void</template-arg><template-arg>void</template-arg><template-arg>void</template-arg></specialization><purpose>A metafunction for generating n-ary expression types with a specified tag type, a grammar element for matching n-ary expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><description><para>Use <computeroutput>nary_expr&lt;_, vararg&lt;_&gt; &gt;</computeroutput> as a grammar element to match any n-ary expression; that is, any non-terminal. </para></description><struct name="impl"><template>
+ </template><specialization><template-arg>Tag</template-arg><template-arg>A0</template-arg><template-arg>A1</template-arg><template-arg>void</template-arg><template-arg>void</template-arg><template-arg>void</template-arg><template-arg>void</template-arg></specialization><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</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 PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><description><para>Use <computeroutput>nary_expr&lt;_, vararg&lt;_&gt; &gt;</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"/>
@@ -2408,7 +2472,7 @@
       <template-type-parameter name="A0"/>
       <template-type-parameter name="A1"/>
       <template-type-parameter name="A2"/>
- </template><specialization><template-arg>A0</template-arg><template-arg>A1</template-arg><template-arg>A2</template-arg><template-arg>void</template-arg><template-arg>void</template-arg><template-arg>void</template-arg></specialization><purpose>A metafunction for generating function-call expression types, a grammar element for matching function-call expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
+ </template><specialization><template-arg>A0</template-arg><template-arg>A1</template-arg><template-arg>A2</template-arg><template-arg>void</template-arg><template-arg>void</template-arg><template-arg>void</template-arg></specialization><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>A metafunction for generating function-call expression types, a grammar element for matching function-call expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
@@ -2417,7 +2481,7 @@
       <template-type-parameter name="A0"/>
       <template-type-parameter name="A1"/>
       <template-type-parameter name="A2"/>
- </template><specialization><template-arg>Tag</template-arg><template-arg>A0</template-arg><template-arg>A1</template-arg><template-arg>A2</template-arg><template-arg>void</template-arg><template-arg>void</template-arg><template-arg>void</template-arg></specialization><purpose>A metafunction for generating n-ary expression types with a specified tag type, a grammar element for matching n-ary expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><description><para>Use <computeroutput>nary_expr&lt;_, vararg&lt;_&gt; &gt;</computeroutput> as a grammar element to match any n-ary expression; that is, any non-terminal. </para></description><struct name="impl"><template>
+ </template><specialization><template-arg>Tag</template-arg><template-arg>A0</template-arg><template-arg>A1</template-arg><template-arg>A2</template-arg><template-arg>void</template-arg><template-arg>void</template-arg><template-arg>void</template-arg></specialization><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</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 PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><description><para>Use <computeroutput>nary_expr&lt;_, vararg&lt;_&gt; &gt;</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"/>
@@ -2426,7 +2490,7 @@
       <template-type-parameter name="A1"/>
       <template-type-parameter name="A2"/>
       <template-type-parameter name="A3"/>
- </template><specialization><template-arg>A0</template-arg><template-arg>A1</template-arg><template-arg>A2</template-arg><template-arg>A3</template-arg><template-arg>void</template-arg><template-arg>void</template-arg></specialization><purpose>A metafunction for generating function-call expression types, a grammar element for matching function-call expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
+ </template><specialization><template-arg>A0</template-arg><template-arg>A1</template-arg><template-arg>A2</template-arg><template-arg>A3</template-arg><template-arg>void</template-arg><template-arg>void</template-arg></specialization><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>A metafunction for generating function-call expression types, a grammar element for matching function-call expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
@@ -2436,7 +2500,7 @@
       <template-type-parameter name="A1"/>
       <template-type-parameter name="A2"/>
       <template-type-parameter name="A3"/>
- </template><specialization><template-arg>Tag</template-arg><template-arg>A0</template-arg><template-arg>A1</template-arg><template-arg>A2</template-arg><template-arg>A3</template-arg><template-arg>void</template-arg><template-arg>void</template-arg></specialization><purpose>A metafunction for generating n-ary expression types with a specified tag type, a grammar element for matching n-ary expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><description><para>Use <computeroutput>nary_expr&lt;_, vararg&lt;_&gt; &gt;</computeroutput> as a grammar element to match any n-ary expression; that is, any non-terminal. </para></description><struct name="impl"><template>
+ </template><specialization><template-arg>Tag</template-arg><template-arg>A0</template-arg><template-arg>A1</template-arg><template-arg>A2</template-arg><template-arg>A3</template-arg><template-arg>void</template-arg><template-arg>void</template-arg></specialization><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</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 PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><description><para>Use <computeroutput>nary_expr&lt;_, vararg&lt;_&gt; &gt;</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"/>
@@ -2446,7 +2510,7 @@
       <template-type-parameter name="A2"/>
       <template-type-parameter name="A3"/>
       <template-type-parameter name="A4"/>
- </template><specialization><template-arg>A0</template-arg><template-arg>A1</template-arg><template-arg>A2</template-arg><template-arg>A3</template-arg><template-arg>A4</template-arg><template-arg>void</template-arg></specialization><purpose>A metafunction for generating function-call expression types, a grammar element for matching function-call expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
+ </template><specialization><template-arg>A0</template-arg><template-arg>A1</template-arg><template-arg>A2</template-arg><template-arg>A3</template-arg><template-arg>A4</template-arg><template-arg>void</template-arg></specialization><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>A metafunction for generating function-call expression types, a grammar element for matching function-call expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><struct name="impl"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
@@ -2457,7 +2521,7 @@
       <template-type-parameter name="A2"/>
       <template-type-parameter name="A3"/>
       <template-type-parameter name="A4"/>
- </template><specialization><template-arg>Tag</template-arg><template-arg>A0</template-arg><template-arg>A1</template-arg><template-arg>A2</template-arg><template-arg>A3</template-arg><template-arg>A4</template-arg><template-arg>void</template-arg></specialization><purpose>A metafunction for generating n-ary expression types with a specified tag type, a grammar element for matching n-ary expressions, and a PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><description><para>Use <computeroutput>nary_expr&lt;_, vararg&lt;_&gt; &gt;</computeroutput> as a grammar element to match any n-ary expression; that is, any non-terminal. </para></description><struct name="impl"><template>
+ </template><specialization><template-arg>Tag</template-arg><template-arg>A0</template-arg><template-arg>A1</template-arg><template-arg>A2</template-arg><template-arg>A3</template-arg><template-arg>A4</template-arg><template-arg>void</template-arg></specialization><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</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 PrimitiveTransform that dispatches to the <computeroutput>pass_through&lt;&gt;</computeroutput> transform. </purpose><description><para>Use <computeroutput>nary_expr&lt;_, vararg&lt;_&gt; &gt;</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"/>
@@ -2466,7 +2530,9 @@
       <template-type-parameter name="Void"><default>void</default></template-type-parameter>
     </template><inherit access="public">boost::mpl::false_</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> has a nested type <computeroutput>proto_is_expr_</computeroutput> that is a typedef for <computeroutput>void</computeroutput>, <computeroutput>is_expr&lt;T&gt;::value</computeroutput> is <computeroutput>true</computeroutput>. (Note, this is the case for <computeroutput>proto::expr&lt;&gt;</computeroutput>, any type that is derived from <computeroutput>proto::extends&lt;&gt;</computeroutput> or that uses the <computeroutput>BOOST_PROTO_BASIC_EXTENDS()</computeroutput> macro.) Otherwise, <computeroutput>is_expr&lt;T&gt;::value</computeroutput> is <computeroutput>false</computeroutput>. </para></description></struct><struct-specialization name="is_expr"><template>
       <template-type-parameter name="T"/>
- </template><specialization><template-arg>T</template-arg><template-arg>typename T::proto_is_expr_</template-arg></specialization><inherit access="public">boost::mpl::true_</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> has a nested type <computeroutput>proto_is_expr_</computeroutput> that is a typedef for <computeroutput>void</computeroutput>, <computeroutput>is_expr&lt;T&gt;::value</computeroutput> is <computeroutput>true</computeroutput>. (Note, this is the case for <computeroutput>proto::expr&lt;&gt;</computeroutput>, any type that is derived from <computeroutput>proto::extends&lt;&gt;</computeroutput> or that uses the <computeroutput>BOOST_PROTO_BASIC_EXTENDS()</computeroutput> macro.) Otherwise, <computeroutput>is_expr&lt;T&gt;::value</computeroutput> is <computeroutput>false</computeroutput>. </para></description></struct-specialization><st
ruct name="tag_of"><template>
+ </template><specialization><template-arg>T</template-arg><template-arg>typename T::proto_is_expr_</template-arg></specialization><inherit access="public">boost::mpl::true_</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> has a nested type <computeroutput>proto_is_expr_</computeroutput> that is a typedef for <computeroutput>void</computeroutput>, <computeroutput>is_expr&lt;T&gt;::value</computeroutput> is <computeroutput>true</computeroutput>. (Note, this is the case for <computeroutput>proto::expr&lt;&gt;</computeroutput>, any type that is derived from <computeroutput>proto::extends&lt;&gt;</computeroutput> or that uses the <computeroutput>BOOST_PROTO_BASIC_EXTENDS()</computeroutput> macro.) Otherwise, <computeroutput>is_expr&lt;T&gt;::value</computeroutput> is <computeroutput>false</computeroutput>. </para></description></struct-specialization><st
ruct-specialization name="is_expr"><template>
+ <template-type-parameter name="T"/>
+ </template><specialization><template-arg>T &amp;</template-arg><template-arg>void</template-arg></specialization><inherit access="public">boost::proto::result_of::is_expr&lt; T &gt;</inherit></struct-specialization><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>Expr::proto_tag</type></typedef></struct><struct-specialization name="tag_of"><template>
       <template-type-parameter name="Expr"/>
@@ -2497,13 +2563,7 @@
       <template-type-parameter name="N"><default>mpl::long_&lt;0&gt;</default></template-type-parameter>
     </template><purpose>A metafunction that returns the type of the Nth child of a Proto expression, where N is an MPL Integral Constant. </purpose><description><para><computeroutput>result_of::child&lt;Expr, N&gt;</computeroutput> is equivalent to <computeroutput>result_of::child_c&lt;Expr, N::value&gt;</computeroutput>. </para></description></struct><struct name="value"><template>
       <template-type-parameter name="Expr"/>
- </template><inherit access="public">boost::proto::result_of::child_c&lt; Expr, 0 &gt;</inherit><purpose>A metafunction that returns the type of the value of a terminal Proto expression. </purpose></struct><struct name="left"><template>
- <template-type-parameter name="Expr"/>
- </template><inherit access="public">boost::proto::result_of::child_c&lt; Expr, 0 &gt;</inherit><purpose>A metafunction that returns the type of the left child of a binary Proto expression. </purpose><description><para><computeroutput>result_of::left&lt;Expr&gt;</computeroutput> is equivalent to <computeroutput>result_of::child_c&lt;Expr, 0&gt;</computeroutput>. </para></description></struct><struct name="right"><template>
- <template-type-parameter name="Expr"/>
- </template><inherit access="public">boost::proto::result_of::child_c&lt; Expr, 1 &gt;</inherit><purpose>A metafunction that returns the type of the right child of a binary Proto expression. </purpose><description><para><computeroutput>result_of::right&lt;Expr&gt;</computeroutput> is equivalent to <computeroutput>result_of::child_c&lt;Expr, 1&gt;</computeroutput>. </para></description></struct><struct-specialization name="child_c"><template>
- <template-type-parameter name="Expr"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>0</template-arg></specialization><purpose>A metafunction that returns the type of the Nth child of a Proto expression. </purpose><description><para>A metafunction that returns the type of the Nth 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 Nth child as it is stored within <computeroutput>Expr</computeroutput>. This may be a value or a reference </para></description><type>Expr::proto_child0</type></typedef><typedef name="type"><description><para>The "value" type of the child, suitable for return by value, computed as follows: <itemizedlist>
+ </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 Nth child as it is stored within <computeroutput>Expr</computeroutput>. This may be a value or a reference </para></description><type>Expr::proto_child0</type></typedef><typedef name="type"><description><para>The "value" type of the child, suitable for return by value, computed as follows: <itemizedlist>
 <listitem><para><computeroutput>T const(&amp;)[N]</computeroutput> becomes <computeroutput>T const(&amp;)[N]</computeroutput> </para></listitem>
 <listitem><para><computeroutput>T[N]</computeroutput> becomes <computeroutput>T(&amp;)[N]</computeroutput> </para></listitem>
 <listitem><para><computeroutput>T(&amp;)[N]</computeroutput> becomes <computeroutput>T(&amp;)[N]</computeroutput> </para></listitem>
@@ -2512,9 +2572,9 @@
 <listitem><para><computeroutput>T &amp;</computeroutput> becomes <computeroutput>T</computeroutput> </para></listitem>
 <listitem><para><computeroutput>T</computeroutput> becomes <computeroutput>T</computeroutput> </para></listitem>
 </itemizedlist>
-</para></description><type><emphasis>unspecified</emphasis></type></typedef></struct-specialization><struct-specialization name="child_c"><template>
+</para></description><type>Expr::proto_child_ref0::value_type</type></typedef></struct><struct-specialization name="value"><template>
       <template-type-parameter name="Expr"/>
- </template><specialization><template-arg>Expr &amp;</template-arg><template-arg>0</template-arg></specialization><typedef name="value_type"><description><para>The raw type of the Nth child as it is stored within <computeroutput>Expr</computeroutput>. This may be a value or a reference </para></description><type>Expr::proto_child0</type></typedef><typedef name="type"><description><para>The "reference" type of the child, suitable for return by reference, computed as follows: <itemizedlist>
+ </template><specialization><template-arg>Expr &amp;</template-arg></specialization><typedef name="value_type"><description><para>The raw type of the Nth child as it is stored within <computeroutput>Expr</computeroutput>. This may be a value or a reference </para></description><type>Expr::proto_child0</type></typedef><typedef name="type"><description><para>The "reference" type of the child, suitable for return by reference, computed as follows: <itemizedlist>
 <listitem><para><computeroutput>T const(&amp;)[N]</computeroutput> becomes <computeroutput>T const(&amp;)[N]</computeroutput> </para></listitem>
 <listitem><para><computeroutput>T[N]</computeroutput> becomes <computeroutput>T(&amp;)[N]</computeroutput> </para></listitem>
 <listitem><para><computeroutput>T(&amp;)[N]</computeroutput> becomes <computeroutput>T(&amp;)[N]</computeroutput> </para></listitem>
@@ -2523,9 +2583,9 @@
 <listitem><para><computeroutput>T &amp;</computeroutput> becomes <computeroutput>T &amp;</computeroutput> </para></listitem>
 <listitem><para><computeroutput>T</computeroutput> becomes <computeroutput>T &amp;</computeroutput> </para></listitem>
 </itemizedlist>
-</para></description><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public static functions"/></struct-specialization><struct-specialization name="child_c"><template>
+</para></description><type>Expr::proto_child_ref0::reference</type></typedef></struct-specialization><struct-specialization name="value"><template>
       <template-type-parameter name="Expr"/>
- </template><specialization><template-arg>Expr const &amp;</template-arg><template-arg>0</template-arg></specialization><typedef name="value_type"><description><para>The raw type of the Nth child as it is stored within <computeroutput>Expr</computeroutput>. This may be a value or a reference </para></description><type>Expr::proto_child0</type></typedef><typedef name="type"><description><para>The "const reference" type of the child, suitable for return by const reference, computed as follows: <itemizedlist>
+ </template><specialization><template-arg>Expr const &amp;</template-arg></specialization><typedef name="value_type"><description><para>The raw type of the Nth child as it is stored within <computeroutput>Expr</computeroutput>. This may be a value or a reference </para></description><type>Expr::proto_child0</type></typedef><typedef name="type"><description><para>The "const reference" type of the child, suitable for return by const reference, computed as follows: <itemizedlist>
 <listitem><para><computeroutput>T const(&amp;)[N]</computeroutput> becomes <computeroutput>T const(&amp;)[N]</computeroutput> </para></listitem>
 <listitem><para><computeroutput>T[N]</computeroutput> becomes <computeroutput>T const(&amp;)[N]</computeroutput> </para></listitem>
 <listitem><para><computeroutput>T(&amp;)[N]</computeroutput> becomes <computeroutput>T(&amp;)[N]</computeroutput> </para></listitem>
@@ -2534,172 +2594,137 @@
 <listitem><para><computeroutput>T &amp;</computeroutput> becomes <computeroutput>T &amp;</computeroutput> </para></listitem>
 <listitem><para><computeroutput>T</computeroutput> becomes <computeroutput>T const &amp;</computeroutput> </para></listitem>
 </itemizedlist>
-</para></description><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public static functions"/></struct-specialization><struct-specialization name="child_c"><template>
+</para></description><type>Expr::proto_child_ref0::const_reference</type></typedef></struct-specialization><struct name="left"><template>
+ <template-type-parameter name="Expr"/>
+ </template><inherit access="public">boost::proto::result_of::child_c&lt; Expr, 0 &gt;</inherit><purpose>A metafunction that returns the type of the left child of a binary Proto expression. </purpose><description><para><computeroutput>result_of::left&lt;Expr&gt;</computeroutput> is equivalent to <computeroutput>result_of::child_c&lt;Expr, 0&gt;</computeroutput>. </para></description></struct><struct name="right"><template>
+ <template-type-parameter name="Expr"/>
+ </template><inherit access="public">boost::proto::result_of::child_c&lt; Expr, 1 &gt;</inherit><purpose>A metafunction that returns the type of the right child of a binary Proto expression. </purpose><description><para><computeroutput>result_of::right&lt;Expr&gt;</computeroutput> is equivalent to <computeroutput>result_of::child_c&lt;Expr, 1&gt;</computeroutput>. </para></description></struct><struct-specialization name="child_c"><template>
+ <template-type-parameter name="Expr"/>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>0</template-arg></specialization><purpose>A metafunction that returns the type of the Nth child of a Proto expression. </purpose><description><para>A metafunction that returns the type of the Nth 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 Nth child as it is stored within <computeroutput>Expr</computeroutput>. This may be a value or a reference </para></description><type>Expr::proto_child0</type></typedef><typedef name="type"><description><para>The "value" type of the child, suitable for return by value, computed as follows: <itemizedlist>
+<listitem><para><computeroutput>T const &amp;</computeroutput> becomes <computeroutput>T</computeroutput> </para></listitem>
+<listitem><para><computeroutput>T &amp;</computeroutput> becomes <computeroutput>T</computeroutput> </para></listitem>
+<listitem><para><computeroutput>T</computeroutput> becomes <computeroutput>T</computeroutput> </para></listitem>
+</itemizedlist>
+</para></description><type>Expr::proto_child_ref0::value_type</type></typedef></struct-specialization><struct-specialization name="child_c"><template>
+ <template-type-parameter name="Expr"/>
+ </template><specialization><template-arg>Expr &amp;</template-arg><template-arg>0</template-arg></specialization><typedef name="value_type"><description><para>The raw type of the Nth child as it is stored within <computeroutput>Expr</computeroutput>. This may be a value or a reference </para></description><type>Expr::proto_child0</type></typedef><typedef name="type"><description><para>The "reference" type of the child, suitable for return by reference, computed as follows: <itemizedlist>
+<listitem><para><computeroutput>T const &amp;</computeroutput> becomes <computeroutput>T const &amp;</computeroutput> </para></listitem>
+<listitem><para><computeroutput>T &amp;</computeroutput> becomes <computeroutput>T &amp;</computeroutput> </para></listitem>
+<listitem><para><computeroutput>T</computeroutput> becomes <computeroutput>T &amp;</computeroutput> </para></listitem>
+</itemizedlist>
+</para></description><type>Expr::proto_child_ref0::reference</type></typedef><method-group name="public static functions"/></struct-specialization><struct-specialization name="child_c"><template>
+ <template-type-parameter name="Expr"/>
+ </template><specialization><template-arg>Expr const &amp;</template-arg><template-arg>0</template-arg></specialization><typedef name="value_type"><description><para>The raw type of the Nth child as it is stored within <computeroutput>Expr</computeroutput>. This may be a value or a reference </para></description><type>Expr::proto_child0</type></typedef><typedef name="type"><description><para>The "const reference" type of the child, suitable for return by const reference, computed as follows: <itemizedlist>
+<listitem><para><computeroutput>T const &amp;</computeroutput> becomes <computeroutput>T const &amp;</computeroutput> </para></listitem>
+<listitem><para><computeroutput>T &amp;</computeroutput> becomes <computeroutput>T &amp;</computeroutput> </para></listitem>
+<listitem><para><computeroutput>T</computeroutput> becomes <computeroutput>T const &amp;</computeroutput> </para></listitem>
+</itemizedlist>
+</para></description><type>Expr::proto_child_ref0::const_reference</type></typedef><method-group name="public static functions"/></struct-specialization><struct-specialization name="child_c"><template>
       <template-type-parameter name="Expr"/>
     </template><specialization><template-arg>Expr</template-arg><template-arg>1</template-arg></specialization><purpose>A metafunction that returns the type of the Nth child of a Proto expression. </purpose><description><para>A metafunction that returns the type of the Nth 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 Nth child as it is stored within <computeroutput>Expr</computeroutput>. This may be a value or a reference </para></description><type>Expr::proto_child1</type></typedef><typedef name="type"><description><para>The "value" type of the child, suitable for return by value, computed as follows: <itemizedlist>
-<listitem><para><computeroutput>T const(&amp;)[N]</computeroutput> becomes <computeroutput>T const(&amp;)[N]</computeroutput> </para></listitem>
-<listitem><para><computeroutput>T[N]</computeroutput> becomes <computeroutput>T(&amp;)[N]</computeroutput> </para></listitem>
-<listitem><para><computeroutput>T(&amp;)[N]</computeroutput> becomes <computeroutput>T(&amp;)[N]</computeroutput> </para></listitem>
-<listitem><para><computeroutput>R(&amp;)(A0,...)</computeroutput> becomes <computeroutput>R(&amp;)(A0,...)</computeroutput> </para></listitem>
 <listitem><para><computeroutput>T const &amp;</computeroutput> becomes <computeroutput>T</computeroutput> </para></listitem>
 <listitem><para><computeroutput>T &amp;</computeroutput> becomes <computeroutput>T</computeroutput> </para></listitem>
 <listitem><para><computeroutput>T</computeroutput> becomes <computeroutput>T</computeroutput> </para></listitem>
 </itemizedlist>
-</para></description><type><emphasis>unspecified</emphasis></type></typedef></struct-specialization><struct-specialization name="child_c"><template>
+</para></description><type>Expr::proto_child_ref1::value_type</type></typedef></struct-specialization><struct-specialization name="child_c"><template>
       <template-type-parameter name="Expr"/>
     </template><specialization><template-arg>Expr &amp;</template-arg><template-arg>1</template-arg></specialization><typedef name="value_type"><description><para>The raw type of the Nth child as it is stored within <computeroutput>Expr</computeroutput>. This may be a value or a reference </para></description><type>Expr::proto_child1</type></typedef><typedef name="type"><description><para>The "reference" type of the child, suitable for return by reference, computed as follows: <itemizedlist>
-<listitem><para><computeroutput>T const(&amp;)[N]</computeroutput> becomes <computeroutput>T const(&amp;)[N]</computeroutput> </para></listitem>
-<listitem><para><computeroutput>T[N]</computeroutput> becomes <computeroutput>T(&amp;)[N]</computeroutput> </para></listitem>
-<listitem><para><computeroutput>T(&amp;)[N]</computeroutput> becomes <computeroutput>T(&amp;)[N]</computeroutput> </para></listitem>
-<listitem><para><computeroutput>R(&amp;)(A0,...)</computeroutput> becomes <computeroutput>R(&amp;)(A0,...)</computeroutput> </para></listitem>
 <listitem><para><computeroutput>T const &amp;</computeroutput> becomes <computeroutput>T const &amp;</computeroutput> </para></listitem>
 <listitem><para><computeroutput>T &amp;</computeroutput> becomes <computeroutput>T &amp;</computeroutput> </para></listitem>
 <listitem><para><computeroutput>T</computeroutput> becomes <computeroutput>T &amp;</computeroutput> </para></listitem>
 </itemizedlist>
-</para></description><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public static functions"/></struct-specialization><struct-specialization name="child_c"><template>
+</para></description><type>Expr::proto_child_ref1::reference</type></typedef><method-group name="public static functions"/></struct-specialization><struct-specialization name="child_c"><template>
       <template-type-parameter name="Expr"/>
     </template><specialization><template-arg>Expr const &amp;</template-arg><template-arg>1</template-arg></specialization><typedef name="value_type"><description><para>The raw type of the Nth child as it is stored within <computeroutput>Expr</computeroutput>. This may be a value or a reference </para></description><type>Expr::proto_child1</type></typedef><typedef name="type"><description><para>The "const reference" type of the child, suitable for return by const reference, computed as follows: <itemizedlist>
-<listitem><para><computeroutput>T const(&amp;)[N]</computeroutput> becomes <computeroutput>T const(&amp;)[N]</computeroutput> </para></listitem>
-<listitem><para><computeroutput>T[N]</computeroutput> becomes <computeroutput>T const(&amp;)[N]</computeroutput> </para></listitem>
-<listitem><para><computeroutput>T(&amp;)[N]</computeroutput> becomes <computeroutput>T(&amp;)[N]</computeroutput> </para></listitem>
-<listitem><para><computeroutput>R(&amp;)(A0,...)</computeroutput> becomes <computeroutput>R(&amp;)(A0,...)</computeroutput> </para></listitem>
 <listitem><para><computeroutput>T const &amp;</computeroutput> becomes <computeroutput>T const &amp;</computeroutput> </para></listitem>
 <listitem><para><computeroutput>T &amp;</computeroutput> becomes <computeroutput>T &amp;</computeroutput> </para></listitem>
 <listitem><para><computeroutput>T</computeroutput> becomes <computeroutput>T const &amp;</computeroutput> </para></listitem>
 </itemizedlist>
-</para></description><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public static functions"/></struct-specialization><struct-specialization name="child_c"><template>
+</para></description><type>Expr::proto_child_ref1::const_reference</type></typedef><method-group name="public static functions"/></struct-specialization><struct-specialization name="child_c"><template>
       <template-type-parameter name="Expr"/>
     </template><specialization><template-arg>Expr</template-arg><template-arg>2</template-arg></specialization><purpose>A metafunction that returns the type of the Nth child of a Proto expression. </purpose><description><para>A metafunction that returns the type of the Nth 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 Nth child as it is stored within <computeroutput>Expr</computeroutput>. This may be a value or a reference </para></description><type>Expr::proto_child2</type></typedef><typedef name="type"><description><para>The "value" type of the child, suitable for return by value, computed as follows: <itemizedlist>
-<listitem><para><computeroutput>T const(&amp;)[N]</computeroutput> becomes <computeroutput>T const(&amp;)[N]</computeroutput> </para></listitem>
-<listitem><para><computeroutput>T[N]</computeroutput> becomes <computeroutput>T(&amp;)[N]</computeroutput> </para></listitem>
-<listitem><para><computeroutput>T(&amp;)[N]</computeroutput> becomes <computeroutput>T(&amp;)[N]</computeroutput> </para></listitem>
-<listitem><para><computeroutput>R(&amp;)(A0,...)</computeroutput> becomes <computeroutput>R(&amp;)(A0,...)</computeroutput> </para></listitem>
 <listitem><para><computeroutput>T const &amp;</computeroutput> becomes <computeroutput>T</computeroutput> </para></listitem>
 <listitem><para><computeroutput>T &amp;</computeroutput> becomes <computeroutput>T</computeroutput> </para></listitem>
 <listitem><para><computeroutput>T</computeroutput> becomes <computeroutput>T</computeroutput> </para></listitem>
 </itemizedlist>
-</para></description><type><emphasis>unspecified</emphasis></type></typedef></struct-specialization><struct-specialization name="child_c"><template>
+</para></description><type>Expr::proto_child_ref2::value_type</type></typedef></struct-specialization><struct-specialization name="child_c"><template>
       <template-type-parameter name="Expr"/>
     </template><specialization><template-arg>Expr &amp;</template-arg><template-arg>2</template-arg></specialization><typedef name="value_type"><description><para>The raw type of the Nth child as it is stored within <computeroutput>Expr</computeroutput>. This may be a value or a reference </para></description><type>Expr::proto_child2</type></typedef><typedef name="type"><description><para>The "reference" type of the child, suitable for return by reference, computed as follows: <itemizedlist>
-<listitem><para><computeroutput>T const(&amp;)[N]</computeroutput> becomes <computeroutput>T const(&amp;)[N]</computeroutput> </para></listitem>
-<listitem><para><computeroutput>T[N]</computeroutput> becomes <computeroutput>T(&amp;)[N]</computeroutput> </para></listitem>
-<listitem><para><computeroutput>T(&amp;)[N]</computeroutput> becomes <computeroutput>T(&amp;)[N]</computeroutput> </para></listitem>
-<listitem><para><computeroutput>R(&amp;)(A0,...)</computeroutput> becomes <computeroutput>R(&amp;)(A0,...)</computeroutput> </para></listitem>
 <listitem><para><computeroutput>T const &amp;</computeroutput> becomes <computeroutput>T const &amp;</computeroutput> </para></listitem>
 <listitem><para><computeroutput>T &amp;</computeroutput> becomes <computeroutput>T &amp;</computeroutput> </para></listitem>
 <listitem><para><computeroutput>T</computeroutput> becomes <computeroutput>T &amp;</computeroutput> </para></listitem>
 </itemizedlist>
-</para></description><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public static functions"/></struct-specialization><struct-specialization name="child_c"><template>
+</para></description><type>Expr::proto_child_ref2::reference</type></typedef><method-group name="public static functions"/></struct-specialization><struct-specialization name="child_c"><template>
       <template-type-parameter name="Expr"/>
     </template><specialization><template-arg>Expr const &amp;</template-arg><template-arg>2</template-arg></specialization><typedef name="value_type"><description><para>The raw type of the Nth child as it is stored within <computeroutput>Expr</computeroutput>. This may be a value or a reference </para></description><type>Expr::proto_child2</type></typedef><typedef name="type"><description><para>The "const reference" type of the child, suitable for return by const reference, computed as follows: <itemizedlist>
-<listitem><para><computeroutput>T const(&amp;)[N]</computeroutput> becomes <computeroutput>T const(&amp;)[N]</computeroutput> </para></listitem>
-<listitem><para><computeroutput>T[N]</computeroutput> becomes <computeroutput>T const(&amp;)[N]</computeroutput> </para></listitem>
-<listitem><para><computeroutput>T(&amp;)[N]</computeroutput> becomes <computeroutput>T(&amp;)[N]</computeroutput> </para></listitem>
-<listitem><para><computeroutput>R(&amp;)(A0,...)</computeroutput> becomes <computeroutput>R(&amp;)(A0,...)</computeroutput> </para></listitem>
 <listitem><para><computeroutput>T const &amp;</computeroutput> becomes <computeroutput>T const &amp;</computeroutput> </para></listitem>
 <listitem><para><computeroutput>T &amp;</computeroutput> becomes <computeroutput>T &amp;</computeroutput> </para></listitem>
 <listitem><para><computeroutput>T</computeroutput> becomes <computeroutput>T const &amp;</computeroutput> </para></listitem>
 </itemizedlist>
-</para></description><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public static functions"/></struct-specialization><struct-specialization name="child_c"><template>
+</para></description><type>Expr::proto_child_ref2::const_reference</type></typedef><method-group name="public static functions"/></struct-specialization><struct-specialization name="child_c"><template>
       <template-type-parameter name="Expr"/>
     </template><specialization><template-arg>Expr</template-arg><template-arg>3</template-arg></specialization><purpose>A metafunction that returns the type of the Nth child of a Proto expression. </purpose><description><para>A metafunction that returns the type of the Nth 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 Nth child as it is stored within <computeroutput>Expr</computeroutput>. This may be a value or a reference </para></description><type>Expr::proto_child3</type></typedef><typedef name="type"><description><para>The "value" type of the child, suitable for return by value, computed as follows: <itemizedlist>
-<listitem><para><computeroutput>T const(&amp;)[N]</computeroutput> becomes <computeroutput>T const(&amp;)[N]</computeroutput> </para></listitem>
-<listitem><para><computeroutput>T[N]</computeroutput> becomes <computeroutput>T(&amp;)[N]</computeroutput> </para></listitem>
-<listitem><para><computeroutput>T(&amp;)[N]</computeroutput> becomes <computeroutput>T(&amp;)[N]</computeroutput> </para></listitem>
-<listitem><para><computeroutput>R(&amp;)(A0,...)</computeroutput> becomes <computeroutput>R(&amp;)(A0,...)</computeroutput> </para></listitem>
 <listitem><para><computeroutput>T const &amp;</computeroutput> becomes <computeroutput>T</computeroutput> </para></listitem>
 <listitem><para><computeroutput>T &amp;</computeroutput> becomes <computeroutput>T</computeroutput> </para></listitem>
 <listitem><para><computeroutput>T</computeroutput> becomes <computeroutput>T</computeroutput> </para></listitem>
 </itemizedlist>
-</para></description><type><emphasis>unspecified</emphasis></type></typedef></struct-specialization><struct-specialization name="child_c"><template>
+</para></description><type>Expr::proto_child_ref3::value_type</type></typedef></struct-specialization><struct-specialization name="child_c"><template>
       <template-type-parameter name="Expr"/>
     </template><specialization><template-arg>Expr &amp;</template-arg><template-arg>3</template-arg></specialization><typedef name="value_type"><description><para>The raw type of the Nth child as it is stored within <computeroutput>Expr</computeroutput>. This may be a value or a reference </para></description><type>Expr::proto_child3</type></typedef><typedef name="type"><description><para>The "reference" type of the child, suitable for return by reference, computed as follows: <itemizedlist>
-<listitem><para><computeroutput>T const(&amp;)[N]</computeroutput> becomes <computeroutput>T const(&amp;)[N]</computeroutput> </para></listitem>
-<listitem><para><computeroutput>T[N]</computeroutput> becomes <computeroutput>T(&amp;)[N]</computeroutput> </para></listitem>
-<listitem><para><computeroutput>T(&amp;)[N]</computeroutput> becomes <computeroutput>T(&amp;)[N]</computeroutput> </para></listitem>
-<listitem><para><computeroutput>R(&amp;)(A0,...)</computeroutput> becomes <computeroutput>R(&amp;)(A0,...)</computeroutput> </para></listitem>
 <listitem><para><computeroutput>T const &amp;</computeroutput> becomes <computeroutput>T const &amp;</computeroutput> </para></listitem>
 <listitem><para><computeroutput>T &amp;</computeroutput> becomes <computeroutput>T &amp;</computeroutput> </para></listitem>
 <listitem><para><computeroutput>T</computeroutput> becomes <computeroutput>T &amp;</computeroutput> </para></listitem>
 </itemizedlist>
-</para></description><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public static functions"/></struct-specialization><struct-specialization name="child_c"><template>
+</para></description><type>Expr::proto_child_ref3::reference</type></typedef><method-group name="public static functions"/></struct-specialization><struct-specialization name="child_c"><template>
       <template-type-parameter name="Expr"/>
     </template><specialization><template-arg>Expr const &amp;</template-arg><template-arg>3</template-arg></specialization><typedef name="value_type"><description><para>The raw type of the Nth child as it is stored within <computeroutput>Expr</computeroutput>. This may be a value or a reference </para></description><type>Expr::proto_child3</type></typedef><typedef name="type"><description><para>The "const reference" type of the child, suitable for return by const reference, computed as follows: <itemizedlist>
-<listitem><para><computeroutput>T const(&amp;)[N]</computeroutput> becomes <computeroutput>T const(&amp;)[N]</computeroutput> </para></listitem>
-<listitem><para><computeroutput>T[N]</computeroutput> becomes <computeroutput>T const(&amp;)[N]</computeroutput> </para></listitem>
-<listitem><para><computeroutput>T(&amp;)[N]</computeroutput> becomes <computeroutput>T(&amp;)[N]</computeroutput> </para></listitem>
-<listitem><para><computeroutput>R(&amp;)(A0,...)</computeroutput> becomes <computeroutput>R(&amp;)(A0,...)</computeroutput> </para></listitem>
 <listitem><para><computeroutput>T const &amp;</computeroutput> becomes <computeroutput>T const &amp;</computeroutput> </para></listitem>
 <listitem><para><computeroutput>T &amp;</computeroutput> becomes <computeroutput>T &amp;</computeroutput> </para></listitem>
 <listitem><para><computeroutput>T</computeroutput> becomes <computeroutput>T const &amp;</computeroutput> </para></listitem>
 </itemizedlist>
-</para></description><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public static functions"/></struct-specialization><struct-specialization name="child_c"><template>
+</para></description><type>Expr::proto_child_ref3::const_reference</type></typedef><method-group name="public static functions"/></struct-specialization><struct-specialization name="child_c"><template>
       <template-type-parameter name="Expr"/>
     </template><specialization><template-arg>Expr</template-arg><template-arg>4</template-arg></specialization><purpose>A metafunction that returns the type of the Nth child of a Proto expression. </purpose><description><para>A metafunction that returns the type of the Nth 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 Nth child as it is stored within <computeroutput>Expr</computeroutput>. This may be a value or a reference </para></description><type>Expr::proto_child4</type></typedef><typedef name="type"><description><para>The "value" type of the child, suitable for return by value, computed as follows: <itemizedlist>
-<listitem><para><computeroutput>T const(&amp;)[N]</computeroutput> becomes <computeroutput>T const(&amp;)[N]</computeroutput> </para></listitem>
-<listitem><para><computeroutput>T[N]</computeroutput> becomes <computeroutput>T(&amp;)[N]</computeroutput> </para></listitem>
-<listitem><para><computeroutput>T(&amp;)[N]</computeroutput> becomes <computeroutput>T(&amp;)[N]</computeroutput> </para></listitem>
-<listitem><para><computeroutput>R(&amp;)(A0,...)</computeroutput> becomes <computeroutput>R(&amp;)(A0,...)</computeroutput> </para></listitem>
 <listitem><para><computeroutput>T const &amp;</computeroutput> becomes <computeroutput>T</computeroutput> </para></listitem>
 <listitem><para><computeroutput>T &amp;</computeroutput> becomes <computeroutput>T</computeroutput> </para></listitem>
 <listitem><para><computeroutput>T</computeroutput> becomes <computeroutput>T</computeroutput> </para></listitem>
 </itemizedlist>
-</para></description><type><emphasis>unspecified</emphasis></type></typedef></struct-specialization><struct-specialization name="child_c"><template>
+</para></description><type>Expr::proto_child_ref4::value_type</type></typedef></struct-specialization><struct-specialization name="child_c"><template>
       <template-type-parameter name="Expr"/>
     </template><specialization><template-arg>Expr &amp;</template-arg><template-arg>4</template-arg></specialization><typedef name="value_type"><description><para>The raw type of the Nth child as it is stored within <computeroutput>Expr</computeroutput>. This may be a value or a reference </para></description><type>Expr::proto_child4</type></typedef><typedef name="type"><description><para>The "reference" type of the child, suitable for return by reference, computed as follows: <itemizedlist>
-<listitem><para><computeroutput>T const(&amp;)[N]</computeroutput> becomes <computeroutput>T const(&amp;)[N]</computeroutput> </para></listitem>
-<listitem><para><computeroutput>T[N]</computeroutput> becomes <computeroutput>T(&amp;)[N]</computeroutput> </para></listitem>
-<listitem><para><computeroutput>T(&amp;)[N]</computeroutput> becomes <computeroutput>T(&amp;)[N]</computeroutput> </para></listitem>
-<listitem><para><computeroutput>R(&amp;)(A0,...)</computeroutput> becomes <computeroutput>R(&amp;)(A0,...)</computeroutput> </para></listitem>
 <listitem><para><computeroutput>T const &amp;</computeroutput> becomes <computeroutput>T const &amp;</computeroutput> </para></listitem>
 <listitem><para><computeroutput>T &amp;</computeroutput> becomes <computeroutput>T &amp;</computeroutput> </para></listitem>
 <listitem><para><computeroutput>T</computeroutput> becomes <computeroutput>T &amp;</computeroutput> </para></listitem>
 </itemizedlist>
-</para></description><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public static functions"/></struct-specialization><struct-specialization name="child_c"><template>
+</para></description><type>Expr::proto_child_ref4::reference</type></typedef><method-group name="public static functions"/></struct-specialization><struct-specialization name="child_c"><template>
       <template-type-parameter name="Expr"/>
     </template><specialization><template-arg>Expr const &amp;</template-arg><template-arg>4</template-arg></specialization><typedef name="value_type"><description><para>The raw type of the Nth child as it is stored within <computeroutput>Expr</computeroutput>. This may be a value or a reference </para></description><type>Expr::proto_child4</type></typedef><typedef name="type"><description><para>The "const reference" type of the child, suitable for return by const reference, computed as follows: <itemizedlist>
-<listitem><para><computeroutput>T const(&amp;)[N]</computeroutput> becomes <computeroutput>T const(&amp;)[N]</computeroutput> </para></listitem>
-<listitem><para><computeroutput>T[N]</computeroutput> becomes <computeroutput>T const(&amp;)[N]</computeroutput> </para></listitem>
-<listitem><para><computeroutput>T(&amp;)[N]</computeroutput> becomes <computeroutput>T(&amp;)[N]</computeroutput> </para></listitem>
-<listitem><para><computeroutput>R(&amp;)(A0,...)</computeroutput> becomes <computeroutput>R(&amp;)(A0,...)</computeroutput> </para></listitem>
 <listitem><para><computeroutput>T const &amp;</computeroutput> becomes <computeroutput>T const &amp;</computeroutput> </para></listitem>
 <listitem><para><computeroutput>T &amp;</computeroutput> becomes <computeroutput>T &amp;</computeroutput> </para></listitem>
 <listitem><para><computeroutput>T</computeroutput> becomes <computeroutput>T const &amp;</computeroutput> </para></listitem>
 </itemizedlist>
-</para></description><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public static functions"/></struct-specialization><struct-specialization name="child_c"><template>
+</para></description><type>Expr::proto_child_ref4::const_reference</type></typedef><method-group name="public static functions"/></struct-specialization><struct-specialization name="child_c"><template>
       <template-type-parameter name="Expr"/>
     </template><specialization><template-arg>Expr</template-arg><template-arg>5</template-arg></specialization><purpose>A metafunction that returns the type of the Nth child of a Proto expression. </purpose><description><para>A metafunction that returns the type of the Nth 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 Nth child as it is stored within <computeroutput>Expr</computeroutput>. This may be a value or a reference </para></description><type>Expr::proto_child5</type></typedef><typedef name="type"><description><para>The "value" type of the child, suitable for return by value, computed as follows: <itemizedlist>
-<listitem><para><computeroutput>T const(&amp;)[N]</computeroutput> becomes <computeroutput>T const(&amp;)[N]</computeroutput> </para></listitem>
-<listitem><para><computeroutput>T[N]</computeroutput> becomes <computeroutput>T(&amp;)[N]</computeroutput> </para></listitem>
-<listitem><para><computeroutput>T(&amp;)[N]</computeroutput> becomes <computeroutput>T(&amp;)[N]</computeroutput> </para></listitem>
-<listitem><para><computeroutput>R(&amp;)(A0,...)</computeroutput> becomes <computeroutput>R(&amp;)(A0,...)</computeroutput> </para></listitem>
 <listitem><para><computeroutput>T const &amp;</computeroutput> becomes <computeroutput>T</computeroutput> </para></listitem>
 <listitem><para><computeroutput>T &amp;</computeroutput> becomes <computeroutput>T</computeroutput> </para></listitem>
 <listitem><para><computeroutput>T</computeroutput> becomes <computeroutput>T</computeroutput> </para></listitem>
 </itemizedlist>
-</para></description><type><emphasis>unspecified</emphasis></type></typedef></struct-specialization><struct-specialization name="child_c"><template>
+</para></description><type>Expr::proto_child_ref5::value_type</type></typedef></struct-specialization><struct-specialization name="child_c"><template>
       <template-type-parameter name="Expr"/>
     </template><specialization><template-arg>Expr &amp;</template-arg><template-arg>5</template-arg></specialization><typedef name="value_type"><description><para>The raw type of the Nth child as it is stored within <computeroutput>Expr</computeroutput>. This may be a value or a reference </para></description><type>Expr::proto_child5</type></typedef><typedef name="type"><description><para>The "reference" type of the child, suitable for return by reference, computed as follows: <itemizedlist>
-<listitem><para><computeroutput>T const(&amp;)[N]</computeroutput> becomes <computeroutput>T const(&amp;)[N]</computeroutput> </para></listitem>
-<listitem><para><computeroutput>T[N]</computeroutput> becomes <computeroutput>T(&amp;)[N]</computeroutput> </para></listitem>
-<listitem><para><computeroutput>T(&amp;)[N]</computeroutput> becomes <computeroutput>T(&amp;)[N]</computeroutput> </para></listitem>
-<listitem><para><computeroutput>R(&amp;)(A0,...)</computeroutput> becomes <computeroutput>R(&amp;)(A0,...)</computeroutput> </para></listitem>
 <listitem><para><computeroutput>T const &amp;</computeroutput> becomes <computeroutput>T const &amp;</computeroutput> </para></listitem>
 <listitem><para><computeroutput>T &amp;</computeroutput> becomes <computeroutput>T &amp;</computeroutput> </para></listitem>
 <listitem><para><computeroutput>T</computeroutput> becomes <computeroutput>T &amp;</computeroutput> </para></listitem>
 </itemizedlist>
-</para></description><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public static functions"/></struct-specialization><struct-specialization name="child_c"><template>
+</para></description><type>Expr::proto_child_ref5::reference</type></typedef><method-group name="public static functions"/></struct-specialization><struct-specialization name="child_c"><template>
       <template-type-parameter name="Expr"/>
     </template><specialization><template-arg>Expr const &amp;</template-arg><template-arg>5</template-arg></specialization><typedef name="value_type"><description><para>The raw type of the Nth child as it is stored within <computeroutput>Expr</computeroutput>. This may be a value or a reference </para></description><type>Expr::proto_child5</type></typedef><typedef name="type"><description><para>The "const reference" type of the child, suitable for return by const reference, computed as follows: <itemizedlist>
-<listitem><para><computeroutput>T const(&amp;)[N]</computeroutput> becomes <computeroutput>T const(&amp;)[N]</computeroutput> </para></listitem>
-<listitem><para><computeroutput>T[N]</computeroutput> becomes <computeroutput>T const(&amp;)[N]</computeroutput> </para></listitem>
-<listitem><para><computeroutput>T(&amp;)[N]</computeroutput> becomes <computeroutput>T(&amp;)[N]</computeroutput> </para></listitem>
-<listitem><para><computeroutput>R(&amp;)(A0,...)</computeroutput> becomes <computeroutput>R(&amp;)(A0,...)</computeroutput> </para></listitem>
 <listitem><para><computeroutput>T const &amp;</computeroutput> becomes <computeroutput>T const &amp;</computeroutput> </para></listitem>
 <listitem><para><computeroutput>T &amp;</computeroutput> becomes <computeroutput>T &amp;</computeroutput> </para></listitem>
 <listitem><para><computeroutput>T</computeroutput> becomes <computeroutput>T const &amp;</computeroutput> </para></listitem>
 </itemizedlist>
-</para></description><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public static functions"/></struct-specialization></namespace><overloaded-function name="as_expr"><signature><type><classname>result_of::as_expr</classname>&lt; T &gt;::reference</type><template>
+</para></description><type>Expr::proto_child_ref5::const_reference</type></typedef><method-group name="public static functions"/></struct-specialization></namespace><overloaded-function name="as_expr"><signature><type><classname>result_of::as_expr</classname>&lt; T &gt;::reference</type><template>
           <template-type-parameter name="T"/>
         </template><parameter name="t"><paramtype>T &amp;</paramtype><description><para>The object to wrap.</para></description></parameter></signature><signature><type><classname>result_of::as_expr</classname>&lt; T const &gt;::reference</type><template>
           <template-type-parameter name="T"/>
@@ -2715,9 +2740,9 @@
         </template><parameter name="expr"><paramtype>Expr &amp;</paramtype><description><para>The Proto expression. </para></description></parameter></signature><signature><type><classname>result_of::child</classname>&lt; Expr const &amp;, N &gt;::type</type><template>
           <template-type-parameter name="N"/>
           <template-type-parameter name="Expr"/>
- </template><parameter name="expr"><paramtype>Expr const &amp;</paramtype></parameter></signature><signature><type><emphasis>unspecified</emphasis></type><template>
+ </template><parameter name="expr"><paramtype>Expr const &amp;</paramtype></parameter></signature><signature><type>Expr2::proto_base_expr::proto_child_ref0::reference</type><template>
           <template-type-parameter name="Expr2"/>
- </template><parameter name="expr2"><paramtype>Expr2 &amp;</paramtype></parameter></signature><signature><type><emphasis>unspecified</emphasis></type><template>
+ </template><parameter name="expr2"><paramtype>Expr2 &amp;</paramtype></parameter></signature><signature><type>Expr2::proto_base_expr::proto_child_ref0::const_reference</type><template>
           <template-type-parameter name="Expr2"/>
         </template><parameter name="expr2"><paramtype>Expr2 const &amp;</paramtype></parameter></signature><purpose>Return the Nth child of the specified Proto expression. </purpose><description><para>Return the Nth child of the specified Proto expression. If <computeroutput>N</computeroutput> is not specified, as in <computeroutput>child(expr)</computeroutput>, then <computeroutput>N</computeroutput> is assumed to be <computeroutput>mpl::long_&lt;0&gt;</computeroutput>. The child is returned by reference. If the expression is holding the child in a <computeroutput>ref_&lt;&gt;</computeroutput> wrapper, it is unwrapped before it is returned.</para><para>
 
@@ -2757,37 +2782,44 @@
 
 
 
-</para></description><requires><para><computeroutput>is_expr&lt;Expr&gt;::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 </para></returns><throws><simpara>Will not throw.</simpara></throws></overloaded-function></namespace></namespace></header><header name="boost/proto/transform.hpp"><para>Includes all the transforms in the transform/ sub-directory. </para></header><header name="boost/proto/transform/arg.hpp"><para>Contains definition of the argN transforms. </para><namespace name="boost"><namespace name="proto"><struct name="_expr"><inherit access="public">transform&lt; boost::proto::_expr &gt;</inherit><purpose>A PrimitiveTransform that returns the current expression unmodified. </purpose><struct name="impl"><template>
+</para></description><requires><para><computeroutput>is_expr&lt;Expr&gt;::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 </para></returns><throws><simpara>Will not throw.</simpara></throws></overloaded-function></namespace></namespace></header><header name="boost/proto/transform.hpp"><para>Includes all the transforms in the transform/ sub-directory. </para></header><header name="boost/proto/transform/arg.hpp"><para>Contains definition of the argN transforms. </para><namespace name="boost"><namespace name="proto"><struct name="_expr"><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>A PrimitiveTransform that returns the current expression unmodified. </purpose><struct name="impl"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><typedef name="result_type"><type>Expr</type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>impl::expr_param</type><parameter name="expr"><paramtype>typename impl::expr_param</paramtype><description><para>An expression </para></description></parameter><parameter name=""><paramtype>typename impl::state_param</paramtype></parameter><parameter name=""><paramtype>typename impl::data_param</paramtype></parameter><description><para>
+ </template><inherit access="public">boost::proto::transform_impl&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>impl::expr_param</type><parameter name="expr"><paramtype>typename impl::expr_param</paramtype><description><para>An expression </para></description></parameter><parameter name=""><paramtype>typename impl::state_param</paramtype></parameter><parameter name=""><paramtype>typename impl::data_param</paramtype></parameter><description><para>
 
 
-</para></description><returns><para><computeroutput>expr</computeroutput> </para></returns><throws><simpara>Will not throw.</simpara></throws></method></method-group></struct></struct><struct name="_state"><inherit access="public">transform&lt; boost::proto::_state &gt;</inherit><purpose>A PrimitiveTransform that returns the current state unmodified. </purpose><struct name="impl"><template>
+</para></description><returns><para><computeroutput>expr</computeroutput> </para></returns><throws><simpara>Will not throw.</simpara></throws></method></method-group></struct></struct><struct name="_state"><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>A PrimitiveTransform that returns the current state unmodified. </purpose><struct name="impl"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><typedef name="result_type"><type>State</type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>impl::state_param</type><parameter name=""><paramtype>typename impl::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl::state_param</paramtype><description><para>The current state. </para></description></parameter><parameter name=""><paramtype>typename impl::data_param</paramtype></parameter><description><para>
+ </template><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><type>State</type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>impl::state_param</type><parameter name=""><paramtype>typename impl::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl::state_param</paramtype><description><para>The current state. </para></description></parameter><parameter name=""><paramtype>typename impl::data_param</paramtype></parameter><description><para>
 
 
-</para></description><returns><para><computeroutput>state</computeroutput> </para></returns><throws><simpara>Will not throw.</simpara></throws></method></method-group></struct></struct><struct name="_data"><inherit access="public">transform&lt; boost::proto::_data &gt;</inherit><purpose>A PrimitiveTransform that returns the current data unmodified. </purpose><struct name="impl"><template>
+</para></description><returns><para><computeroutput>state</computeroutput> </para></returns><throws><simpara>Will not throw.</simpara></throws></method></method-group></struct></struct><struct name="_data"><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>A PrimitiveTransform that returns the current data unmodified. </purpose><struct name="impl"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><typedef name="result_type"><type>Data</type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>impl::data_param</type><parameter name=""><paramtype>typename impl::expr_param</paramtype></parameter><parameter name=""><paramtype>typename impl::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl::data_param</paramtype></parameter><description><para>
+ </template><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><type>Data</type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>impl::data_param</type><parameter name=""><paramtype>typename impl::expr_param</paramtype></parameter><parameter name=""><paramtype>typename impl::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl::data_param</paramtype></parameter><description><para>
 
 
 </para></description><returns><para><computeroutput>data</computeroutput> </para></returns><throws><simpara>Will not throw.</simpara></throws></method></method-group></struct></struct><struct name="_child_c"><template>
       <template-nontype-parameter name="I"><type>int</type></template-nontype-parameter>
- </template><inherit access="public">transform&lt; boost::proto::_child_c&lt; I &gt; &gt;</inherit><purpose>A PrimitiveTransform that returns I-th child of the current expression. </purpose><struct name="impl"><template>
+ </template><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>A PrimitiveTransform that returns I-th child of the current expression. </purpose><struct name="impl"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><typedef name="result_type"><type>result_of::child_c&lt; Expr, I &gt;::type</type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_of::child_c&lt; typename impl::expr_param, I &gt;::type</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><description><para>
+ </template><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><type>result_of::child_c&lt; Expr, I &gt;::type</type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_of::child_c&lt; typename impl::expr_param, I &gt;::type</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><description><para>
+
 
+</para></description><returns><para><computeroutput>proto::child_c&lt;I&gt;(expr)</computeroutput> </para></returns><throws><simpara>Will not throw.</simpara></throws></method></method-group></struct></struct><struct name="_value"><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>A PrimitiveTransform that returns the value of the current terminal expression. </purpose><struct name="impl"><template>
+ <template-type-parameter name="Expr"/>
+ <template-type-parameter name="State"/>
+ <template-type-parameter name="Data"/>
+ </template><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><type><classname>result_of::value</classname>&lt; Expr &gt;::type</type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type><classname>result_of::value</classname>&lt; typename impl::expr_param &gt;::type</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><description><para>
 
-</para></description><returns><para><computeroutput>proto::child_c&lt;I&gt;(expr)</computeroutput> </para></returns><throws><simpara>Will not throw.</simpara></throws></method></method-group></struct></struct><struct name="_byref"><inherit access="public">boost::proto::callable</inherit><purpose>A unary CallableTransform that wraps its argument in a <computeroutput>boost::reference_wrapper&lt;&gt;</computeroutput>. </purpose><struct-specialization name="result"><template>
+
+</para></description><returns><para><computeroutput>proto::value(expr)</computeroutput> </para></returns><throws><simpara>Will not throw.</simpara></throws></method></method-group></struct></struct><struct name="_byref"><inherit access="public">boost::proto::callable</inherit><purpose>A unary CallableTransform that wraps its argument in a <computeroutput>boost::reference_wrapper&lt;&gt;</computeroutput>. </purpose><struct-specialization name="result"><template>
       <template-type-parameter name="This"/>
       <template-type-parameter name="T"/>
     </template><specialization><template-arg>This(T &amp;)</template-arg></specialization><typedef name="type"><type>boost::reference_wrapper&lt; T &gt; const</type></typedef></struct-specialization><struct-specialization name="result"><template>
@@ -2841,7 +2873,7 @@
  {};
 </programlisting> </para></description></struct><struct-specialization name="call"><template>
       <template-type-parameter name="Fun"/>
- </template><specialization><template-arg>Fun()</template-arg></specialization><inherit access="public">transform&lt; boost::proto::call&lt; Fun()&gt; &gt;</inherit><purpose>Either call the PolymorphicFunctionObject with 0 arguments, or invoke the PrimitiveTransform with 3 arguments. </purpose><struct name="impl"><template>
+ </template><specialization><template-arg>Fun()</template-arg></specialization><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>Either call the PolymorphicFunctionObject with 0 arguments, or invoke the PrimitiveTransform with 3 arguments. </purpose><struct name="impl"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
@@ -2849,7 +2881,7 @@
 </para></description></struct></struct-specialization><struct-specialization name="call"><template>
       <template-type-parameter name="Fun"/>
       <template-type-parameter name="A0"/>
- </template><specialization><template-arg>Fun(A0)</template-arg></specialization><inherit access="public">transform&lt; boost::proto::call&lt; Fun(A0)&gt; &gt;</inherit><purpose>Either call the PolymorphicFunctionObject with 1 argument, or invoke the PrimitiveTransform with 3 arguments. </purpose><struct name="impl"><template>
+ </template><specialization><template-arg>Fun(A0)</template-arg></specialization><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>Either call the PolymorphicFunctionObject with 1 argument, or invoke the PrimitiveTransform with 3 arguments. </purpose><struct name="impl"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
@@ -2859,15 +2891,15 @@
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
       <template-nontype-parameter name="B"><type>bool</type></template-nontype-parameter>
- </template><typedef name="a0"><type><classname>when</classname>&lt; _, A0 &gt;::template impl&lt; Expr, State, Data &gt;::result_type</type></typedef><typedef name="result_type"><type>boost::result_of&lt; <classname>Fun</classname>(a0)&gt;::type</type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct><struct-specialization name="impl2"><template>
+ </template><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="a0"><type><classname>when</classname>&lt; _, A0 &gt;::template impl&lt; Expr, State, Data &gt;::result_type</type></typedef><typedef name="result_type"><type>boost::result_of&lt; <classname>Fun</classname>(a0)&gt;::type</type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>true</template-arg></specialization><typedef name="a0"><type><classname>when</classname>&lt; _, A0 &gt;::template impl&lt; Expr, State, Data &gt;::result_type</type></typedef><typedef name="result_type"><type>Fun::template impl&lt; a0, State, Data &gt;::result_type</type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization></struct-specialization><struct-specialization name="call"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>true</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="a0"><type><classname>when</classname>&lt; _, A0 &gt;::template impl&lt; Expr, State, Data &gt;::result_type</type></typedef><typedef name="result_type"><type>Fun::template impl&lt; a0, State, Data &gt;::result_type</type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization></struct-specialization><struct-specialization name="call"><template>
       <template-type-parameter name="Fun"/>
       <template-type-parameter name="A0"/>
       <template-type-parameter name="A1"/>
- </template><specialization><template-arg>Fun(A0</template-arg><template-arg>A1)</template-arg></specialization><inherit access="public">transform&lt; boost::proto::call&lt; Fun(A0, A1)&gt; &gt;</inherit><purpose>Either call the PolymorphicFunctionObject with 2 arguments, or invoke the PrimitiveTransform with 3 arguments. </purpose><struct name="impl"><template>
+ </template><specialization><template-arg>Fun(A0</template-arg><template-arg>A1)</template-arg></specialization><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>Either call the PolymorphicFunctionObject with 2 arguments, or invoke the PrimitiveTransform with 3 arguments. </purpose><struct name="impl"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
@@ -2877,16 +2909,16 @@
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
       <template-nontype-parameter name="B"><type>bool</type></template-nontype-parameter>
- </template><typedef name="a0"><type><classname>when</classname>&lt; _, A0 &gt;::template impl&lt; Expr, State, Data &gt;::result_type</type></typedef><typedef name="a1"><type><classname>when</classname>&lt; _, A1 &gt;::template impl&lt; Expr, State, Data &gt;::result_type</type></typedef><typedef name="result_type"><type>boost::result_of&lt; <classname>Fun</classname>(a0, a1)&gt;::type</type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct><struct-specialization name="impl2"><template>
+ </template><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="a0"><type><classname>when</classname>&lt; _, A0 &gt;::template impl&lt; Expr, State, Data &gt;::result_type</type></typedef><typedef name="a1"><type><classname>when</classname>&lt; _, A1 &gt;::template impl&lt; Expr, State, Data &gt;::result_type</type></typedef><typedef name="result_type"><type>boost::result_of&lt; <classname>Fun</classname>(a0, a1)&gt;::type</type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>true</template-arg></specialization><typedef name="a0"><type><classname>when</classname>&lt; _, A0 &gt;::template impl&lt; Expr, State, Data &gt;::result_type</type></typedef><typedef name="a1"><type><classname>when</classname>&lt; _, A1 &gt;::template impl&lt; Expr, State, Data &gt;::result_type</type></typedef><typedef name="result_type"><type>Fun::template impl&lt; a0, a1, Data &gt;::result_type</type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization></struct-specialization><struct-specialization name
="call"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>true</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="a0"><type><classname>when</classname>&lt; _, A0 &gt;::template impl&lt; Expr, State, Data &gt;::result_type</type></typedef><typedef name="a1"><type><classname>when</classname>&lt; _, A1 &gt;::template impl&lt; Expr, State, Data &gt;::result_type</type></typedef><typedef name="result_type"><type>Fun::template impl&lt; a0, a1, Data &gt;::result_type</type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method>
</method-group></struct-specialization></struct-specialization><struct-specialization name="call"><template>
       <template-type-parameter name="Fun"/>
       <template-type-parameter name="A0"/>
       <template-type-parameter name="A1"/>
       <template-type-parameter name="A2"/>
- </template><specialization><template-arg>Fun(A0</template-arg><template-arg>A1</template-arg><template-arg>A2)</template-arg></specialization><inherit access="public">transform&lt; boost::proto::call&lt; Fun(A0, A1, A2)&gt; &gt;</inherit><purpose>Call the PolymorphicFunctionObject or the PrimitiveTransform with the current expression, state and data, transformed according to <computeroutput>A0</computeroutput>, <computeroutput>A1</computeroutput>, and <computeroutput>A2</computeroutput>, respectively. </purpose><struct name="impl"><template>
+ </template><specialization><template-arg>Fun(A0</template-arg><template-arg>A1</template-arg><template-arg>A2)</template-arg></specialization><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>Call the PolymorphicFunctionObject or the PrimitiveTransform with the current expression, state and data, transformed according to <computeroutput>A0</computeroutput>, <computeroutput>A1</computeroutput>, and <computeroutput>A2</computeroutput>, respectively. </purpose><struct name="impl"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
@@ -2896,21 +2928,21 @@
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
       <template-nontype-parameter name="B"><type>bool</type></template-nontype-parameter>
- </template><typedef name="a0"><type><classname>when</classname>&lt; _, A0 &gt;::template impl&lt; Expr, State, Data &gt;::result_type</type></typedef><typedef name="a1"><type><classname>when</classname>&lt; _, A1 &gt;::template impl&lt; Expr, State, Data &gt;::result_type</type></typedef><typedef name="a2"><type><classname>when</classname>&lt; _, A2 &gt;::template impl&lt; Expr, State, Data &gt;::result_type</type></typedef><typedef name="result_type"><type>boost::result_of&lt; <classname>Fun</classname>(a0, a1, a2)&gt;::type</type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct><struct-specialization name="impl2"><template>
+ </template><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="a0"><type><classname>when</classname>&lt; _, A0 &gt;::template impl&lt; Expr, State, Data &gt;::result_type</type></typedef><typedef name="a1"><type><classname>when</classname>&lt; _, A1 &gt;::template impl&lt; Expr, State, Data &gt;::result_type</type></typedef><typedef name="a2"><type><classname>when</classname>&lt; _, A2 &gt;::template impl&lt; Expr, State, Data &gt;::result_type</type></typedef><typedef name="result_type"><type>boost::result_of&lt; <classname>Fun</classname>(a0, a1, a2)&gt;::type</type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-gr
oup></struct><struct-specialization name="impl2"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>true</template-arg></specialization><typedef name="a0"><type><classname>when</classname>&lt; _, A0 &gt;::template impl&lt; Expr, State, Data &gt;::result_type</type></typedef><typedef name="a1"><type><classname>when</classname>&lt; _, A1 &gt;::template impl&lt; Expr, State, Data &gt;::result_type</type></typedef><typedef name="a2"><type><classname>when</classname>&lt; _, A2 &gt;::template impl&lt; Expr, State, Data &gt;::result_type</type></typedef><typedef name="result_type"><type>Fun::template impl&lt; a0, a1, a2 &gt;::result_type</type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typename impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename imp
l2::data_param</paramtype></parameter></method></method-group></struct-specialization></struct-specialization><struct-specialization name="call"><template>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg><template-arg>true</template-arg></specialization><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="a0"><type><classname>when</classname>&lt; _, A0 &gt;::template impl&lt; Expr, State, Data &gt;::result_type</type></typedef><typedef name="a1"><type><classname>when</classname>&lt; _, A1 &gt;::template impl&lt; Expr, State, Data &gt;::result_type</type></typedef><typedef name="a2"><type><classname>when</classname>&lt; _, A2 &gt;::template impl&lt; Expr, State, Data &gt;::result_type</type></typedef><typedef name="result_type"><type>Fun::template impl&lt; a0, a1, a2 &gt;::result_type</type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl2::expr_param</paramtype></parameter><parameter name="state"><paramtype>typenam
e impl2::state_param</paramtype></parameter><parameter name="data"><paramtype>typename impl2::data_param</paramtype></parameter></method></method-group></struct-specialization></struct-specialization><struct-specialization name="call"><template>
       <template-type-parameter name="Fun"/>
       <template-type-parameter name="A0"/>
       <template-type-parameter name="A1"/>
       <template-type-parameter name="A2"/>
       <template-type-parameter name="A3"/>
- </template><specialization><template-arg>Fun(A0</template-arg><template-arg>A1</template-arg><template-arg>A2</template-arg><template-arg>A3)</template-arg></specialization><inherit access="public">transform&lt; boost::proto::call&lt; Fun(A0, A1, A2, A3)&gt; &gt;</inherit><purpose>Call the PolymorphicFunctionObject <computeroutput>Fun</computeroutput> with the current expression, state and data, transformed according to <computeroutput>A0</computeroutput> through <computeroutput>AN</computeroutput>. </purpose><struct name="impl"><template>
+ </template><specialization><template-arg>Fun(A0</template-arg><template-arg>A1</template-arg><template-arg>A2</template-arg><template-arg>A3)</template-arg></specialization><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>Call the PolymorphicFunctionObject <computeroutput>Fun</computeroutput> with the current expression, state and data, transformed according to <computeroutput>A0</computeroutput> through <computeroutput>AN</computeroutput>. </purpose><struct name="impl"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><typedef name="a0"><type><classname>when</classname>&lt; _, A0 &gt;::template impl&lt; Expr, State, Data &gt;::result_type</type></typedef><typedef name="a1"><type><classname>when</classname>&lt; _, A1 &gt;::template impl&lt; Expr, State, Data &gt;::result_type</type></typedef><typedef name="a2"><type><classname>when</classname>&lt; _, A2 &gt;::template impl&lt; Expr, State, Data &gt;::result_type</type></typedef><typedef name="a3"><type><classname>when</classname>&lt; _, A3 &gt;::template impl&lt; Expr, State, Data &gt;::result_type</type></typedef><typedef name="result_type"><type>boost::result_of&lt; <classname>Fun</classname>(a0, a1, a2, a3)&gt;::type</type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl::expr_param</paramtype><description><para>The current expression </para></description></parameter><parameter name="state"><paramtype>typename impl::state_param</paramtype><d
escription><para>The current state </para></description></parameter><parameter name="data"><paramtype>typename impl::data_param</paramtype><description><para>An arbitrary data </para></description></parameter><description><para>Let <computeroutput>ax</computeroutput> be <computeroutput>when&lt;_, Ax&gt;()(expr, state, data)</computeroutput> for each <computeroutput>x</computeroutput> in <computeroutput>[0,N]</computeroutput>. Return <computeroutput>Fun()(a0, a1,... aN)</computeroutput>.</para><para>
+ </template><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="a0"><type><classname>when</classname>&lt; _, A0 &gt;::template impl&lt; Expr, State, Data &gt;::result_type</type></typedef><typedef name="a1"><type><classname>when</classname>&lt; _, A1 &gt;::template impl&lt; Expr, State, Data &gt;::result_type</type></typedef><typedef name="a2"><type><classname>when</classname>&lt; _, A2 &gt;::template impl&lt; Expr, State, Data &gt;::result_type</type></typedef><typedef name="a3"><type><classname>when</classname>&lt; _, A3 &gt;::template impl&lt; Expr, State, Data &gt;::result_type</type></typedef><typedef name="result_type"><type>boost::result_of&lt; <classname>Fun</classname>(a0, a1, a2, a3)&gt;::type</type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl::expr_param</paramtype><description><para>The current expression </para></descripti
on></parameter><parameter name="state"><paramtype>typename impl::state_param</paramtype><description><para>The current state </para></description></parameter><parameter name="data"><paramtype>typename impl::data_param</paramtype><description><para>An arbitrary data </para></description></parameter><description><para>Let <computeroutput>ax</computeroutput> be <computeroutput>when&lt;_, Ax&gt;()(expr, state, data)</computeroutput> for each <computeroutput>x</computeroutput> in <computeroutput>[0,N]</computeroutput>. Return <computeroutput>Fun()(a0, a1,... aN)</computeroutput>.</para><para>
 </para></description></method></method-group></struct></struct-specialization><struct-specialization name="call"><template>
       <template-type-parameter name="Fun"/>
       <template-type-parameter name="A0"/>
@@ -2918,20 +2950,20 @@
       <template-type-parameter name="A2"/>
       <template-type-parameter name="A3"/>
       <template-type-parameter name="A4"/>
- </template><specialization><template-arg>Fun(A0</template-arg><template-arg>A1</template-arg><template-arg>A2</template-arg><template-arg>A3</template-arg><template-arg>A4)</template-arg></specialization><inherit access="public">transform&lt; boost::proto::call&lt; Fun(A0, A1, A2, A3, A4)&gt; &gt;</inherit><purpose>Call the PolymorphicFunctionObject <computeroutput>Fun</computeroutput> with the current expression, state and data, transformed according to <computeroutput>A0</computeroutput> through <computeroutput>AN</computeroutput>. </purpose><struct name="impl"><template>
+ </template><specialization><template-arg>Fun(A0</template-arg><template-arg>A1</template-arg><template-arg>A2</template-arg><template-arg>A3</template-arg><template-arg>A4)</template-arg></specialization><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>Call the PolymorphicFunctionObject <computeroutput>Fun</computeroutput> with the current expression, state and data, transformed according to <computeroutput>A0</computeroutput> through <computeroutput>AN</computeroutput>. </purpose><struct name="impl"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><typedef name="a0"><type><classname>when</classname>&lt; _, A0 &gt;::template impl&lt; Expr, State, Data &gt;::result_type</type></typedef><typedef name="a1"><type><classname>when</classname>&lt; _, A1 &gt;::template impl&lt; Expr, State, Data &gt;::result_type</type></typedef><typedef name="a2"><type><classname>when</classname>&lt; _, A2 &gt;::template impl&lt; Expr, State, Data &gt;::result_type</type></typedef><typedef name="a3"><type><classname>when</classname>&lt; _, A3 &gt;::template impl&lt; Expr, State, Data &gt;::result_type</type></typedef><typedef name="a4"><type><classname>when</classname>&lt; _, A4 &gt;::template impl&lt; Expr, State, Data &gt;::result_type</type></typedef><typedef name="result_type"><type>boost::result_of&lt; <classname>Fun</classname>(a0, a1, a2, a3, a4)&gt;::type</type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl::expr_param</paramtype><descri
ption><para>The current expression </para></description></parameter><parameter name="state"><paramtype>typename impl::state_param</paramtype><description><para>The current state </para></description></parameter><parameter name="data"><paramtype>typename impl::data_param</paramtype><description><para>An arbitrary data </para></description></parameter><description><para>Let <computeroutput>ax</computeroutput> be <computeroutput>when&lt;_, Ax&gt;()(expr, state, data)</computeroutput> for each <computeroutput>x</computeroutput> in <computeroutput>[0,N]</computeroutput>. Return <computeroutput>Fun()(a0, a1,... aN)</computeroutput>.</para><para>
+ </template><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="a0"><type><classname>when</classname>&lt; _, A0 &gt;::template impl&lt; Expr, State, Data &gt;::result_type</type></typedef><typedef name="a1"><type><classname>when</classname>&lt; _, A1 &gt;::template impl&lt; Expr, State, Data &gt;::result_type</type></typedef><typedef name="a2"><type><classname>when</classname>&lt; _, A2 &gt;::template impl&lt; Expr, State, Data &gt;::result_type</type></typedef><typedef name="a3"><type><classname>when</classname>&lt; _, A3 &gt;::template impl&lt; Expr, State, Data &gt;::result_type</type></typedef><typedef name="a4"><type><classname>when</classname>&lt; _, A4 &gt;::template impl&lt; Expr, State, Data &gt;::result_type</type></typedef><typedef name="result_type"><type>boost::result_of&lt; <classname>Fun</classname>(a0, a1, a2, a3, a4)&gt;::type</type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result
_type</type><parameter name="expr"><paramtype>typename impl::expr_param</paramtype><description><para>The current expression </para></description></parameter><parameter name="state"><paramtype>typename impl::state_param</paramtype><description><para>The current state </para></description></parameter><parameter name="data"><paramtype>typename impl::data_param</paramtype><description><para>An arbitrary data </para></description></parameter><description><para>Let <computeroutput>ax</computeroutput> be <computeroutput>when&lt;_, Ax&gt;()(expr, state, data)</computeroutput> for each <computeroutput>x</computeroutput> in <computeroutput>[0,N]</computeroutput>. Return <computeroutput>Fun()(a0, a1,... aN)</computeroutput>.</para><para>
 </para></description></method></method-group></struct></struct-specialization></namespace></namespace></header><header name="boost/proto/transform/fold.hpp"><para>Contains definition of the fold&lt;&gt; and reverse_fold&lt;&gt; transforms. </para><namespace name="boost"><namespace name="proto"><struct name="fold"><template>
       <template-type-parameter name="Sequence"/>
       <template-type-parameter name="State0"/>
       <template-type-parameter name="Fun"/>
- </template><inherit access="public">transform&lt; boost::proto::fold&lt; Sequence, State0, Fun &gt; &gt;</inherit><purpose>A PrimitiveTransform that invokes the <computeroutput>fusion::fold&lt;&gt;</computeroutput> algorithm to accumulate. </purpose><struct name="impl"><template>
+ </template><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>A PrimitiveTransform that invokes the <computeroutput>fusion::fold&lt;&gt;</computeroutput> algorithm to accumulate. </purpose><struct name="impl"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><typedef name="sequence"><purpose>A Fusion sequence. </purpose><type>remove_reference&lt; typename <classname>when</classname>&lt; _, Sequence &gt;::template <classname>impl</classname>&lt; Expr, State, Data &gt;::result_type &gt;::type</type></typedef><typedef name="state0"><purpose>An initial state for the fold. </purpose><type>remove_reference&lt; typename <classname>when</classname>&lt; _, State0 &gt;::template <classname>impl</classname>&lt; Expr, State, Data &gt;::result_type &gt;::type</type></typedef><typedef name="fun"><purpose><computeroutput>fun(v)(e,s) == when&lt;_,Fun&gt;()(e,s,v)</computeroutput> </purpose><type><emphasis>unspecified</emphasis></type></typedef><typedef name="result_type"><type>fusion::result_of::fold&lt; sequence, state0, <classname>fun</classname> &gt;::type</type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl::expr_param</paramtype><description>
<para>The current expression </para></description></parameter><parameter name="state"><paramtype>typename impl::state_param</paramtype><description><para>The current state </para></description></parameter><parameter name="data"><paramtype>typename impl::data_param</paramtype><description><para>An arbitrary data </para></description></parameter><description><para>Let <computeroutput>seq</computeroutput> be <computeroutput>when&lt;_, Sequence&gt;()(expr, state, data)</computeroutput>, let <computeroutput>state0</computeroutput> be <computeroutput>when&lt;_, State0&gt;()(expr, state, data)</computeroutput>, and let <computeroutput>fun(data)</computeroutput> be an object such that <computeroutput>fun(data)(expr, state)</computeroutput> is equivalent to <computeroutput>when&lt;_, Fun&gt;()(expr, state, data)</computeroutput>. Then, this function returns <computeroutput>fusion::fold(seq, state0, fun(data))</computeroutput>.</para><para>
+ </template><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="sequence"><purpose>A Fusion sequence. </purpose><type>remove_reference&lt; typename <classname>when</classname>&lt; _, Sequence &gt;::template <classname>impl</classname>&lt; Expr, State, Data &gt;::result_type &gt;::type</type></typedef><typedef name="state0"><purpose>An initial state for the fold. </purpose><type>remove_reference&lt; typename <classname>when</classname>&lt; _, State0 &gt;::template <classname>impl</classname>&lt; Expr, State, Data &gt;::result_type &gt;::type</type></typedef><typedef name="fun"><purpose><computeroutput>fun(v)(e,s) == when&lt;_,Fun&gt;()(e,s,v)</computeroutput> </purpose><type><emphasis>unspecified</emphasis></type></typedef><typedef name="result_type"><type>fusion::result_of::fold&lt; sequence, state0, <classname>fun</classname> &gt;::type</type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type<
/type><parameter name="expr"><paramtype>typename impl::expr_param</paramtype><description><para>The current expression </para></description></parameter><parameter name="state"><paramtype>typename impl::state_param</paramtype><description><para>The current state </para></description></parameter><parameter name="data"><paramtype>typename impl::data_param</paramtype><description><para>An arbitrary data </para></description></parameter><description><para>Let <computeroutput>seq</computeroutput> be <computeroutput>when&lt;_, Sequence&gt;()(expr, state, data)</computeroutput>, let <computeroutput>state0</computeroutput> be <computeroutput>when&lt;_, State0&gt;()(expr, state, data)</computeroutput>, and let <computeroutput>fun(data)</computeroutput> be an object such that <computeroutput>fun(data)(expr, state)</computeroutput> is equivalent to <computeroutput>when&lt;_, Fun&gt;()(expr, state, data)</computeroutput>. Then, this function returns <computeroutput>fusion::fold(seq, state0, fun(data))</computeroutput>.</
para><para>
 </para></description></method></method-group></struct></struct><struct name="reverse_fold"><template>
       <template-type-parameter name="Sequence"/>
       <template-type-parameter name="State0"/>
@@ -2940,7 +2972,7 @@
       <template-type-parameter name="Sequence"/>
       <template-type-parameter name="State0"/>
       <template-type-parameter name="Fun"/>
- </template><inherit access="public">transform&lt; boost::proto::fold_tree&lt; Sequence, State0, Fun &gt; &gt;</inherit><purpose>A PrimitiveTransform that recursively applies the <computeroutput>fold&lt;&gt;</computeroutput> transform to sub-trees that all share a common tag type. </purpose><description><para><computeroutput>fold_tree&lt;&gt;</computeroutput> is useful for flattening trees into lists; for example, you might use <computeroutput>fold_tree&lt;&gt;</computeroutput> to flatten an expression tree like <computeroutput>a | b | c</computeroutput> into a Fusion list like <computeroutput>cons(c, cons(b, cons(a)))</computeroutput>.</para><para><computeroutput>fold_tree&lt;&gt;</computeroutput> is easily understood in terms of a <computeroutput>recurse_if_&lt;&gt;</computeroutput> helper, defined as follows:</para><para><programlisting> template&lt;typename Tag, typename Fun&gt;
+ </template><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>A PrimitiveTransform that recursively applies the <computeroutput>fold&lt;&gt;</computeroutput> transform to sub-trees that all share a common tag type. </purpose><description><para><computeroutput>fold_tree&lt;&gt;</computeroutput> is useful for flattening trees into lists; for example, you might use <computeroutput>fold_tree&lt;&gt;</computeroutput> to flatten an expression tree like <computeroutput>a | b | c</computeroutput> into a Fusion list like <computeroutput>cons(c, cons(b, cons(a)))</computeroutput>.</para><para><computeroutput>fold_tree&lt;&gt;</computeroutput> is easily understood in terms of a <computeroutput>recurse_if_&lt;&gt;</computeroutput> helper, defined as follows:</para><para><programlisting> template&lt;typename Tag, typename Fun&gt;
  struct recurse_if_
    : if_&lt;
          // If the current node has type type "Tag" ...
@@ -2959,7 +2991,7 @@
       <template-type-parameter name="Sequence"/>
       <template-type-parameter name="State0"/>
       <template-type-parameter name="Fun"/>
- </template><inherit access="public">transform&lt; boost::proto::reverse_fold_tree&lt; Sequence, State0, Fun &gt; &gt;</inherit><purpose>A PrimitiveTransform that recursively applies the <computeroutput>reverse_fold&lt;&gt;</computeroutput> transform to sub-trees that all share a common tag type. </purpose><description><para><computeroutput>reverse_fold_tree&lt;&gt;</computeroutput> is useful for flattening trees into lists; for example, you might use <computeroutput>reverse_fold_tree&lt;&gt;</computeroutput> to flatten an expression tree like <computeroutput>a | b | c</computeroutput> into a Fusion list like <computeroutput>cons(a, cons(b, cons(c)))</computeroutput>.</para><para><computeroutput>reverse_fold_tree&lt;&gt;</computeroutput> is easily understood in terms of a <computeroutput>recurse_if_&lt;&gt;</computeroutput> helper, defined as follows:</para><para><programlisting> template&lt;typename Tag, typename Fun&gt;
+ </template><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>A PrimitiveTransform that recursively applies the <computeroutput>reverse_fold&lt;&gt;</computeroutput> transform to sub-trees that all share a common tag type. </purpose><description><para><computeroutput>reverse_fold_tree&lt;&gt;</computeroutput> is useful for flattening trees into lists; for example, you might use <computeroutput>reverse_fold_tree&lt;&gt;</computeroutput> to flatten an expression tree like <computeroutput>a | b | c</computeroutput> into a Fusion list like <computeroutput>cons(a, cons(b, cons(c)))</computeroutput>.</para><para><computeroutput>reverse_fold_tree&lt;&gt;</computeroutput> is easily understood in terms of a <computeroutput>recurse_if_&lt;&gt;</computeroutput> helper, defined as follows:</para><para><programlisting> template&lt;typename Tag, typename Fun&gt;
  struct recurse_if_
    : if_&lt;
          // If the current node has type type "Tag" ...
@@ -2974,22 +3006,90 @@
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template></struct></struct></namespace></namespace></header><header name="boost/proto/transform/lazy.hpp"><para>Contains definition of the lazy&lt;&gt; transform. </para><namespace name="boost"><namespace name="proto"><struct name="lazy"><template>
+ </template></struct></struct></namespace></namespace></header><header name="boost/proto/transform/impl.hpp"><para>Contains definition of transform&lt;&gt; and transform_impl&lt;&gt; helpers. </para><namespace name="boost"><namespace name="proto"><struct name="apply_transform"><template>
+ <template-type-parameter name="PrimitiveTransform"/>
+ <template-type-parameter name="Expr"/>
+ <template-type-parameter name="State"><default>int</default></template-type-parameter>
+ <template-type-parameter name="Data"><default>int</default></template-type-parameter>
+ </template></struct><struct name="transform_base"><typedef name="proto_is_callable_"><type>void</type></typedef><typedef name="proto_is_transform_"><type>void</type></typedef></struct><struct name="empty_base"/><struct name="transform"><template>
+ <template-type-parameter name="PrimitiveTransform"/>
+ <template-type-parameter name="Base"><default>transform_base</default></template-type-parameter>
+ </template><struct-specialization name="result"><template>
+ <template-type-parameter name="This"/>
+ <template-type-parameter name="Expr"/>
+ </template><specialization><template-arg>This(Expr)</template-arg></specialization><typedef name="type"><type>PrimitiveTransform::template impl&lt; Expr, int, int &gt;::result_type</type></typedef></struct-specialization><struct-specialization name="result"><template>
+ <template-type-parameter name="This"/>
+ <template-type-parameter name="Expr"/>
+ <template-type-parameter name="State"/>
+ </template><specialization><template-arg>This(Expr</template-arg><template-arg>State)</template-arg></specialization><typedef name="type"><type>PrimitiveTransform::template impl&lt; Expr, State, int &gt;::result_type</type></typedef></struct-specialization><struct-specialization name="result"><template>
+ <template-type-parameter name="This"/>
+ <template-type-parameter name="Expr"/>
+ <template-type-parameter name="State"/>
+ <template-type-parameter name="Data"/>
+ </template><specialization><template-arg>This(Expr</template-arg><template-arg>State</template-arg><template-arg>Data)</template-arg></specialization><typedef name="type"><type>PrimitiveTransform::template impl&lt; Expr, State, Data &gt;::result_type</type></typedef></struct-specialization><typedef name="transform_type"><type>PrimitiveTransform</type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type><classname>apply_transform</classname>&lt; PrimitiveTransform, Expr &amp; &gt;::result_type</type><template>
+ <template-type-parameter name="Expr"/>
+ </template><parameter name="expr"><paramtype>Expr &amp;</paramtype></parameter></method><method name="operator()" cv="const"><type><classname>apply_transform</classname>&lt; PrimitiveTransform, Expr &amp;, State &amp; &gt;::result_type</type><template>
+ <template-type-parameter name="Expr"/>
+ <template-type-parameter name="State"/>
+ </template><parameter name="expr"><paramtype>Expr &amp;</paramtype></parameter><parameter name="state"><paramtype>State &amp;</paramtype></parameter></method><method name="operator()" cv="const"><type><classname>apply_transform</classname>&lt; PrimitiveTransform, Expr &amp;, State const &amp; &gt;::result_type</type><template>
+ <template-type-parameter name="Expr"/>
+ <template-type-parameter name="State"/>
+ </template><parameter name="expr"><paramtype>Expr &amp;</paramtype></parameter><parameter name="state"><paramtype>State const &amp;</paramtype></parameter></method><method name="operator()" cv="const"><type><classname>apply_transform</classname>&lt; PrimitiveTransform, Expr &amp;, State &amp;, Data &amp; &gt;::result_type</type><template>
+ <template-type-parameter name="Expr"/>
+ <template-type-parameter name="State"/>
+ <template-type-parameter name="Data"/>
+ </template><parameter name="expr"><paramtype>Expr &amp;</paramtype></parameter><parameter name="state"><paramtype>State &amp;</paramtype></parameter><parameter name="data"><paramtype>Data &amp;</paramtype></parameter></method><method name="operator()" cv="const"><type><classname>apply_transform</classname>&lt; PrimitiveTransform, Expr &amp;, State const &amp;, Data &amp; &gt;::result_type</type><template>
+ <template-type-parameter name="Expr"/>
+ <template-type-parameter name="State"/>
+ <template-type-parameter name="Data"/>
+ </template><parameter name="expr"><paramtype>Expr &amp;</paramtype></parameter><parameter name="state"><paramtype>State const &amp;</paramtype></parameter><parameter name="data"><paramtype>Data &amp;</paramtype></parameter></method></method-group></struct><struct name="transform_impl"><template>
+ <template-type-parameter name="Expr"/>
+ <template-type-parameter name="State"/>
+ <template-type-parameter name="Data"/>
+ </template><typedef name="expr"><type>Expr const</type></typedef><typedef name="expr_param"><type>Expr const &amp;</type></typedef><typedef name="state"><type>State const</type></typedef><typedef name="state_param"><type>State const &amp;</type></typedef><typedef name="data"><type>Data const</type></typedef><typedef name="data_param"><type>Data const &amp;</type></typedef></struct><struct-specialization name="transform_impl"><template>
+ <template-type-parameter name="Expr"/>
+ <template-type-parameter name="State"/>
+ <template-type-parameter name="Data"/>
+ </template><specialization><template-arg>Expr &amp;</template-arg><template-arg>State</template-arg><template-arg>Data</template-arg></specialization><typedef name="expr"><type>Expr</type></typedef><typedef name="expr_param"><type>Expr &amp;</type></typedef><typedef name="state"><type>State const</type></typedef><typedef name="state_param"><type>State const &amp;</type></typedef><typedef name="data"><type>Data const</type></typedef><typedef name="data_param"><type>Data const &amp;</type></typedef></struct-specialization><struct-specialization name="transform_impl"><template>
+ <template-type-parameter name="Expr"/>
+ <template-type-parameter name="State"/>
+ <template-type-parameter name="Data"/>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State &amp;</template-arg><template-arg>Data</template-arg></specialization><typedef name="expr"><type>Expr const</type></typedef><typedef name="expr_param"><type>Expr const &amp;</type></typedef><typedef name="state"><type>State</type></typedef><typedef name="state_param"><type>State &amp;</type></typedef><typedef name="data"><type>Data const</type></typedef><typedef name="data_param"><type>Data const &amp;</type></typedef></struct-specialization><struct-specialization name="transform_impl"><template>
+ <template-type-parameter name="Expr"/>
+ <template-type-parameter name="State"/>
+ <template-type-parameter name="Data"/>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State</template-arg><template-arg>Data &amp;</template-arg></specialization><typedef name="expr"><type>Expr const</type></typedef><typedef name="expr_param"><type>Expr const &amp;</type></typedef><typedef name="state"><type>State const</type></typedef><typedef name="state_param"><type>State const &amp;</type></typedef><typedef name="data"><type>Data</type></typedef><typedef name="data_param"><type>Data &amp;</type></typedef></struct-specialization><struct-specialization name="transform_impl"><template>
+ <template-type-parameter name="Expr"/>
+ <template-type-parameter name="State"/>
+ <template-type-parameter name="Data"/>
+ </template><specialization><template-arg>Expr &amp;</template-arg><template-arg>State &amp;</template-arg><template-arg>Data</template-arg></specialization><typedef name="expr"><type>Expr</type></typedef><typedef name="expr_param"><type>Expr &amp;</type></typedef><typedef name="state"><type>State</type></typedef><typedef name="state_param"><type>State &amp;</type></typedef><typedef name="data"><type>Data const</type></typedef><typedef name="data_param"><type>Data const &amp;</type></typedef></struct-specialization><struct-specialization name="transform_impl"><template>
+ <template-type-parameter name="Expr"/>
+ <template-type-parameter name="State"/>
+ <template-type-parameter name="Data"/>
+ </template><specialization><template-arg>Expr &amp;</template-arg><template-arg>State</template-arg><template-arg>Data &amp;</template-arg></specialization><typedef name="expr"><type>Expr</type></typedef><typedef name="expr_param"><type>Expr &amp;</type></typedef><typedef name="state"><type>State const</type></typedef><typedef name="state_param"><type>State const &amp;</type></typedef><typedef name="data"><type>Data</type></typedef><typedef name="data_param"><type>Data &amp;</type></typedef></struct-specialization><struct-specialization name="transform_impl"><template>
+ <template-type-parameter name="Expr"/>
+ <template-type-parameter name="State"/>
+ <template-type-parameter name="Data"/>
+ </template><specialization><template-arg>Expr</template-arg><template-arg>State &amp;</template-arg><template-arg>Data &amp;</template-arg></specialization><typedef name="expr"><type>Expr const</type></typedef><typedef name="expr_param"><type>Expr const &amp;</type></typedef><typedef name="state"><type>State</type></typedef><typedef name="state_param"><type>State &amp;</type></typedef><typedef name="data"><type>Data</type></typedef><typedef name="data_param"><type>Data &amp;</type></typedef></struct-specialization><struct-specialization name="transform_impl"><template>
+ <template-type-parameter name="Expr"/>
+ <template-type-parameter name="State"/>
+ <template-type-parameter name="Data"/>
+ </template><specialization><template-arg>Expr &amp;</template-arg><template-arg>State &amp;</template-arg><template-arg>Data &amp;</template-arg></specialization><typedef name="expr"><type>Expr</type></typedef><typedef name="expr_param"><type>Expr &amp;</type></typedef><typedef name="state"><type>State</type></typedef><typedef name="state_param"><type>State &amp;</type></typedef><typedef name="data"><type>Data</type></typedef><typedef name="data_param"><type>Data &amp;</type></typedef></struct-specialization></namespace></namespace></header><header name="boost/proto/transform/lazy.hpp"><para>Contains definition of the lazy&lt;&gt; transform. </para><namespace name="boost"><namespace name="proto"><struct name="lazy"><template>
       <template-type-parameter name="Object"/>
- </template><inherit access="public">transform&lt; boost::proto::lazy&lt; Object &gt; &gt;</inherit><purpose>A PrimitiveTransform that uses <computeroutput>make&lt;&gt;</computeroutput> to build a CallableTransform, and then uses <computeroutput>call&lt;&gt;</computeroutput> to apply it. </purpose><description><para><computeroutput>lazy&lt;&gt;</computeroutput> is useful as a higher-order transform, when the transform to be applied depends on the current state of the transformation. The invocation of the <computeroutput>make&lt;&gt;</computeroutput> transform evaluates any nested transforms, and the resulting type is treated as a CallableTransform, which is evaluated with <computeroutput>call&lt;&gt;</computeroutput>. </para></description><struct name="impl"><template>
+ </template><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>A PrimitiveTransform that uses <computeroutput>make&lt;&gt;</computeroutput> to build a CallableTransform, and then uses <computeroutput>call&lt;&gt;</computeroutput> to apply it. </purpose><description><para><computeroutput>lazy&lt;&gt;</computeroutput> is useful as a higher-order transform, when the transform to be applied depends on the current state of the transformation. The invocation of the <computeroutput>make&lt;&gt;</computeroutput> transform evaluates any nested transforms, and the resulting type is treated as a CallableTransform, which is evaluated with <computeroutput>call&lt;&gt;</computeroutput>. </para></description><struct name="impl"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
     </template></struct></struct><struct-specialization name="lazy"><template>
       <template-type-parameter name="Object"/>
- </template><specialization><template-arg>Object()</template-arg></specialization><inherit access="public">transform&lt; boost::proto::lazy&lt; Object()&gt; &gt;</inherit><purpose>A PrimitiveTransform that uses <computeroutput>make&lt;&gt;</computeroutput> to build a CallableTransform, and then uses <computeroutput>call&lt;&gt;</computeroutput> to apply it. </purpose><description><para><computeroutput>lazy&lt;&gt;</computeroutput> is useful as a higher-order transform, when the transform to be applied depends on the current state of the transformation. The invocation of the <computeroutput>make&lt;&gt;</computeroutput> transform evaluates any nested transforms, and the resulting type is treated as a CallableTransform, which is evaluated with <computeroutput>call&lt;&gt;</computeroutput>. </para></description><struct name="impl"><template>
+ </template><specialization><template-arg>Object()</template-arg></specialization><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>A PrimitiveTransform that uses <computeroutput>make&lt;&gt;</computeroutput> to build a CallableTransform, and then uses <computeroutput>call&lt;&gt;</computeroutput> to apply it. </purpose><description><para><computeroutput>lazy&lt;&gt;</computeroutput> is useful as a higher-order transform, when the transform to be applied depends on the current state of the transformation. The invocation of the <computeroutput>make&lt;&gt;</computeroutput> transform evaluates any nested transforms, and the resulting type is treated as a CallableTransform, which is evaluated with <computeroutput>call&lt;&gt;</computeroutput>. </para></description><struct name="impl"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
     </template></struct></struct-specialization><struct-specialization name="lazy"><template>
       <template-type-parameter name="Object"/>
       <template-type-parameter name="A0"/>
- </template><specialization><template-arg>Object(A0)</template-arg></specialization><inherit access="public">transform&lt; boost::proto::lazy&lt; Object(A0)&gt; &gt;</inherit><purpose>A PrimitiveTransform that uses <computeroutput>make&lt;&gt;</computeroutput> to build a CallableTransform, and then uses <computeroutput>call&lt;&gt;</computeroutput> to apply it. </purpose><description><para><computeroutput>lazy&lt;&gt;</computeroutput> is useful as a higher-order transform, when the transform to be applied depends on the current state of the transformation. The invocation of the <computeroutput>make&lt;&gt;</computeroutput> transform evaluates any nested transforms, and the resulting type is treated as a CallableTransform, which is evaluated with <computeroutput>call&lt;&gt;</computeroutput>. </para></description><struct name="impl"><template>
+ </template><specialization><template-arg>Object(A0)</template-arg></specialization><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>A PrimitiveTransform that uses <computeroutput>make&lt;&gt;</computeroutput> to build a CallableTransform, and then uses <computeroutput>call&lt;&gt;</computeroutput> to apply it. </purpose><description><para><computeroutput>lazy&lt;&gt;</computeroutput> is useful as a higher-order transform, when the transform to be applied depends on the current state of the transformation. The invocation of the <computeroutput>make&lt;&gt;</computeroutput> transform evaluates any nested transforms, and the resulting type is treated as a CallableTransform, which is evaluated with <computeroutput>call&lt;&gt;</computeroutput>. </para></description><struct name="impl"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
@@ -2997,7 +3097,7 @@
       <template-type-parameter name="Object"/>
       <template-type-parameter name="A0"/>
       <template-type-parameter name="A1"/>
- </template><specialization><template-arg>Object(A0</template-arg><template-arg>A1)</template-arg></specialization><inherit access="public">transform&lt; boost::proto::lazy&lt; Object(A0, A1)&gt; &gt;</inherit><purpose>A PrimitiveTransform that uses <computeroutput>make&lt;&gt;</computeroutput> to build a CallableTransform, and then uses <computeroutput>call&lt;&gt;</computeroutput> to apply it. </purpose><description><para><computeroutput>lazy&lt;&gt;</computeroutput> is useful as a higher-order transform, when the transform to be applied depends on the current state of the transformation. The invocation of the <computeroutput>make&lt;&gt;</computeroutput> transform evaluates any nested transforms, and the resulting type is treated as a CallableTransform, which is evaluated with <computeroutput>call&lt;&gt;</computeroutput>. </para></description><struct name="impl"><template>
+ </template><specialization><template-arg>Object(A0</template-arg><template-arg>A1)</template-arg></specialization><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>A PrimitiveTransform that uses <computeroutput>make&lt;&gt;</computeroutput> to build a CallableTransform, and then uses <computeroutput>call&lt;&gt;</computeroutput> to apply it. </purpose><description><para><computeroutput>lazy&lt;&gt;</computeroutput> is useful as a higher-order transform, when the transform to be applied depends on the current state of the transformation. The invocation of the <computeroutput>make&lt;&gt;</computeroutput> transform evaluates any nested transforms, and the resulting type is treated as a CallableTransform, which is evaluated with <computeroutput>call&lt;&gt;</computeroutput>. </para></description><struct name="impl"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
@@ -3006,7 +3106,7 @@
       <template-type-parameter name="A0"/>
       <template-type-parameter name="A1"/>
       <template-type-parameter name="A2"/>
- </template><specialization><template-arg>Object(A0</template-arg><template-arg>A1</template-arg><template-arg>A2)</template-arg></specialization><inherit access="public">transform&lt; boost::proto::lazy&lt; Object(A0, A1, A2)&gt; &gt;</inherit><purpose>A PrimitiveTransform that uses <computeroutput>make&lt;&gt;</computeroutput> to build a CallableTransform, and then uses <computeroutput>call&lt;&gt;</computeroutput> to apply it. </purpose><description><para><computeroutput>lazy&lt;&gt;</computeroutput> is useful as a higher-order transform, when the transform to be applied depends on the current state of the transformation. The invocation of the <computeroutput>make&lt;&gt;</computeroutput> transform evaluates any nested transforms, and the resulting type is treated as a CallableTransform, which is evaluated with <computeroutput>call&lt;&gt;</computeroutput>. </para></description><struct name="impl"><template>
+ </template><specialization><template-arg>Object(A0</template-arg><template-arg>A1</template-arg><template-arg>A2)</template-arg></specialization><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>A PrimitiveTransform that uses <computeroutput>make&lt;&gt;</computeroutput> to build a CallableTransform, and then uses <computeroutput>call&lt;&gt;</computeroutput> to apply it. </purpose><description><para><computeroutput>lazy&lt;&gt;</computeroutput> is useful as a higher-order transform, when the transform to be applied depends on the current state of the transformation. The invocation of the <computeroutput>make&lt;&gt;</computeroutput> transform evaluates any nested transforms, and the resulting type is treated as a CallableTransform, which is evaluated with <computeroutput>call&lt;&gt;</computeroutput>. </para></description><struct name="impl"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
@@ -3016,7 +3116,7 @@
       <template-type-parameter name="A1"/>
       <template-type-parameter name="A2"/>
       <template-type-parameter name="A3"/>
- </template><specialization><template-arg>Object(A0</template-arg><template-arg>A1</template-arg><template-arg>A2</template-arg><template-arg>A3)</template-arg></specialization><inherit access="public">transform&lt; boost::proto::lazy&lt; Object(A0, A1, A2, A3)&gt; &gt;</inherit><purpose>A PrimitiveTransform that uses <computeroutput>make&lt;&gt;</computeroutput> to build a CallableTransform, and then uses <computeroutput>call&lt;&gt;</computeroutput> to apply it. </purpose><description><para><computeroutput>lazy&lt;&gt;</computeroutput> is useful as a higher-order transform, when the transform to be applied depends on the current state of the transformation. The invocation of the <computeroutput>make&lt;&gt;</computeroutput> transform evaluates any nested transforms, and the resulting type is treated as a CallableTransform, which is evaluated with <computeroutput>call&lt;&gt;</computeroutput>. </para></description><struct name="impl"><template>
+ </template><specialization><template-arg>Object(A0</template-arg><template-arg>A1</template-arg><template-arg>A2</template-arg><template-arg>A3)</template-arg></specialization><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>A PrimitiveTransform that uses <computeroutput>make&lt;&gt;</computeroutput> to build a CallableTransform, and then uses <computeroutput>call&lt;&gt;</computeroutput> to apply it. </purpose><description><para><computeroutput>lazy&lt;&gt;</computeroutput> is useful as a higher-order transform, when the transform to be applied depends on the current state of the transformation. The invocation of the <computeroutput>make&lt;&gt;</computeroutput> transform evaluates any nested transforms, and the resulting type is treated as a CallableTransform, which is evaluated with <computeroutput>call&lt;&gt;</computeroutput>. </para></description><struct name="impl"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
@@ -3027,13 +3127,38 @@
       <template-type-parameter name="A2"/>
       <template-type-parameter name="A3"/>
       <template-type-parameter name="A4"/>
- </template><specialization><template-arg>Object(A0</template-arg><template-arg>A1</template-arg><template-arg>A2</template-arg><template-arg>A3</template-arg><template-arg>A4)</template-arg></specialization><inherit access="public">transform&lt; boost::proto::lazy&lt; Object(A0, A1, A2, A3, A4)&gt; &gt;</inherit><purpose>A PrimitiveTransform that uses <computeroutput>make&lt;&gt;</computeroutput> to build a CallableTransform, and then uses <computeroutput>call&lt;&gt;</computeroutput> to apply it. </purpose><description><para><computeroutput>lazy&lt;&gt;</computeroutput> is useful as a higher-order transform, when the transform to be applied depends on the current state of the transformation. The invocation of the <computeroutput>make&lt;&gt;</computeroutput> transform evaluates any nested transforms, and the resulting type is treated as a CallableTransform, which is evaluated with <computeroutput>call&lt;&gt;</computeroutput>. </para></description><struct name="impl"><template>
+ </template><specialization><template-arg>Object(A0</template-arg><template-arg>A1</template-arg><template-arg>A2</template-arg><template-arg>A3</template-arg><template-arg>A4)</template-arg></specialization><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>A PrimitiveTransform that uses <computeroutput>make&lt;&gt;</computeroutput> to build a CallableTransform, and then uses <computeroutput>call&lt;&gt;</computeroutput> to apply it. </purpose><description><para><computeroutput>lazy&lt;&gt;</computeroutput> is useful as a higher-order transform, when the transform to be applied depends on the current state of the transformation. The invocation of the <computeroutput>make&lt;&gt;</computeroutput> transform evaluates any nested transforms, and the resulting type is treated as a CallableTransform, which is evaluated with <computeroutput>call&lt;&gt;</computeroutput>. </para></description><struct name="impl"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template></struct></struct-specialization></namespace></namespace></header><header name="boost/proto/transform/make.hpp"><para>Contains definition of the make&lt;&gt; transform. </para><namespace name="boost"><namespace name="proto"><struct name="make"><template>
+ </template></struct></struct-specialization></namespace></namespace></header><header name="boost/proto/transform/make.hpp"><para>Contains definition of the make&lt;&gt; transform. </para><namespace name="boost"><namespace name="proto"><struct name="protect"><template>
+ <template-type-parameter name="PrimitiveTransform"/>
+ </template><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>A PrimitiveTransform which prevents another PrimitiveTransform from being applied in an <computeroutput>ObjectTransform</computeroutput>. </purpose><description><para>When building higher order transforms with <computeroutput>make&lt;&gt;</computeroutput> or <computeroutput>lazy&lt;&gt;</computeroutput>, you sometimes would like to build types that are parameterized with Proto transforms. In such lambda-style transforms, Proto will unhelpfully find all nested transforms and apply them, even if you don't want them to be applied. Consider the following transform, which will replace the <computeroutput>_</computeroutput> in <computeroutput>Bar&lt;_&gt;()</computeroutput> with <computeroutput>proto::terminal&lt;int&gt;type</computeroutput>:</para><para><programlisting> template&lt;typename T&gt;
+ struct Bar
+ {};
+
+ struct Foo
+ : proto::when&lt;_, Bar&lt;_&gt;() &gt;
+ {};
+
+ proto::terminal&lt;int&gt;::type i = {0};
+
+ int main()
+ {
+ Foo()(i);
+ std::cout &lt;&lt; typeid(Foo()(i)).name() &lt;&lt; std::endl;
+ }
+</programlisting></para><para>If you actually wanted to default-construct an object of type <computeroutput>Bar&lt;_&gt;</computeroutput>, you would have to protect the <computeroutput>_</computeroutput> to prevent it from being applied. You can use <computeroutput>proto::protect&lt;&gt;</computeroutput> as follows:</para><para><programlisting> // OK: replace anything with Bar&lt;_&gt;()
+ struct Foo
+ : proto::when&lt;_, Bar&lt;_&gt;() &gt;
+ {};
+</programlisting> </para></description><struct name="impl"><template>
+ <template-type-parameter name=""/>
+ <template-type-parameter name=""/>
+ <template-type-parameter name=""/>
+ </template><typedef name="result_type"><type>PrimitiveTransform</type></typedef></struct></struct><struct name="make"><template>
       <template-type-parameter name="Object"/>
- </template><inherit access="public">transform&lt; boost::proto::make&lt; Object &gt; &gt;</inherit><purpose>A PrimitiveTransform which computes a type by evaluating any nested transforms and then constructs an object of that type. </purpose><description><para>The <computeroutput>make&lt;&gt;</computeroutput> transform checks to see if <computeroutput>Object</computeroutput> is a template. If it is, the template type is disassembled to find nested transforms. Proto considers the following types to represent transforms:</para><para><itemizedlist>
+ </template><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>A PrimitiveTransform which computes a type by evaluating any nested transforms and then constructs an object of that type. </purpose><description><para>The <computeroutput>make&lt;&gt;</computeroutput> transform checks to see if <computeroutput>Object</computeroutput> is a template. If it is, the template type is disassembled to find nested transforms. Proto considers the following types to represent transforms:</para><para><itemizedlist>
 <listitem><para>Function types </para></listitem>
 <listitem><para>Function pointer types </para></listitem>
 <listitem><para>Types for which <computeroutput>proto::is_callable&lt; type &gt;::value</computeroutput> is <computeroutput>true</computeroutput> </para></listitem>
@@ -3049,52 +3174,52 @@
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name=""><paramtype>typename impl::expr_param</paramtype></parameter><parameter name=""><paramtype>typename impl::state_param</paramtype></parameter><parameter name=""><paramtype>typename impl::data_param</paramtype></parameter><purpose>
+ </template><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name=""><paramtype>typename impl::expr_param</paramtype></parameter><parameter name=""><paramtype>typename impl::state_param</paramtype></parameter><parameter name=""><paramtype>typename impl::data_param</paramtype></parameter><purpose>
 </purpose></method></method-group></struct></struct><struct-specialization name="make"><template>
       <template-type-parameter name="Object"/>
- </template><specialization><template-arg>Object()</template-arg></specialization><inherit access="public">transform&lt; boost::proto::make&lt; Object()&gt; &gt;</inherit><purpose>A PrimitiveTransform which computes a type by evaluating any nested transforms and then constructs an object of that type with the current expression, state and data, transformed according to <computeroutput>A0</computeroutput> through <computeroutput>AN</computeroutput>. </purpose><struct name="impl"><template>
+ </template><specialization><template-arg>Object()</template-arg></specialization><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>A PrimitiveTransform which computes a type by evaluating any nested transforms and then constructs an object of that type with the current expression, state and data, transformed according to <computeroutput>A0</computeroutput> through <computeroutput>AN</computeroutput>. </purpose><struct name="impl"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><typedef name="result_type"><purpose><computeroutput>make&lt;Object&gt;::result&lt;void(Expr, State, Data)&gt;::type</computeroutput> </purpose><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl::expr_param</paramtype><description><para>The current expression </para></description></parameter><parameter name="state"><paramtype>typename impl::state_param</paramtype><description><para>The current state </para></description></parameter><parameter name="data"><paramtype>typename impl::data_param</paramtype><description><para>An arbitrary data </para></description></parameter><description><para>Let <computeroutput>ax</computeroutput> be <computeroutput>when&lt;_, Ax&gt;()(expr, state, data)</computeroutput> for each <computeroutput>x</computeroutput> in <computeroutput>[0,N]</computeroutput>. Let <computeroutput>T</computeroutput> be <computer
output>result&lt;void(Expr, State, Data)&gt;::type</computeroutput>. Return <computeroutput>T(a0, a1,... aN)</computeroutput>.</para><para>
+ </template><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><purpose><computeroutput>make&lt;Object&gt;::result&lt;void(Expr, State, Data)&gt;::type</computeroutput> </purpose><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl::expr_param</paramtype><description><para>The current expression </para></description></parameter><parameter name="state"><paramtype>typename impl::state_param</paramtype><description><para>The current state </para></description></parameter><parameter name="data"><paramtype>typename impl::data_param</paramtype><description><para>An arbitrary data </para></description></parameter><description><para>Let <computeroutput>ax</computeroutput> be <computeroutput>when&lt;_, Ax&gt;()(expr, state, data)</computeroutput> for each <computeroutput>x</computeroutput> in <
computeroutput>[0,N]</computeroutput>. Let <computeroutput>T</computeroutput> be <computeroutput>result&lt;void(Expr, State, Data)&gt;::type</computeroutput>. Return <computeroutput>T(a0, a1,... aN)</computeroutput>.</para><para>
 </para></description></method></method-group></struct></struct-specialization><struct-specialization name="make"><template>
       <template-type-parameter name="Object"/>
       <template-type-parameter name="A0"/>
- </template><specialization><template-arg>Object(A0)</template-arg></specialization><inherit access="public">transform&lt; boost::proto::make&lt; Object(A0)&gt; &gt;</inherit><purpose>A PrimitiveTransform which computes a type by evaluating any nested transforms and then constructs an object of that type with the current expression, state and data, transformed according to <computeroutput>A0</computeroutput> through <computeroutput>AN</computeroutput>. </purpose><struct name="impl"><template>
+ </template><specialization><template-arg>Object(A0)</template-arg></specialization><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>A PrimitiveTransform which computes a type by evaluating any nested transforms and then constructs an object of that type with the current expression, state and data, transformed according to <computeroutput>A0</computeroutput> through <computeroutput>AN</computeroutput>. </purpose><struct name="impl"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><typedef name="result_type"><purpose><computeroutput>make&lt;Object&gt;::result&lt;void(Expr, State, Data)&gt;::type</computeroutput> </purpose><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl::expr_param</paramtype><description><para>The current expression </para></description></parameter><parameter name="state"><paramtype>typename impl::state_param</paramtype><description><para>The current state </para></description></parameter><parameter name="data"><paramtype>typename impl::data_param</paramtype><description><para>An arbitrary data </para></description></parameter><description><para>Let <computeroutput>ax</computeroutput> be <computeroutput>when&lt;_, Ax&gt;()(expr, state, data)</computeroutput> for each <computeroutput>x</computeroutput> in <computeroutput>[0,N]</computeroutput>. Let <computeroutput>T</computeroutput> be <computer
output>result&lt;void(Expr, State, Data)&gt;::type</computeroutput>. Return <computeroutput>T(a0, a1,... aN)</computeroutput>.</para><para>
+ </template><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><purpose><computeroutput>make&lt;Object&gt;::result&lt;void(Expr, State, Data)&gt;::type</computeroutput> </purpose><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl::expr_param</paramtype><description><para>The current expression </para></description></parameter><parameter name="state"><paramtype>typename impl::state_param</paramtype><description><para>The current state </para></description></parameter><parameter name="data"><paramtype>typename impl::data_param</paramtype><description><para>An arbitrary data </para></description></parameter><description><para>Let <computeroutput>ax</computeroutput> be <computeroutput>when&lt;_, Ax&gt;()(expr, state, data)</computeroutput> for each <computeroutput>x</computeroutput> in <
computeroutput>[0,N]</computeroutput>. Let <computeroutput>T</computeroutput> be <computeroutput>result&lt;void(Expr, State, Data)&gt;::type</computeroutput>. Return <computeroutput>T(a0, a1,... aN)</computeroutput>.</para><para>
 </para></description></method></method-group></struct></struct-specialization><struct-specialization name="make"><template>
       <template-type-parameter name="Object"/>
       <template-type-parameter name="A0"/>
       <template-type-parameter name="A1"/>
- </template><specialization><template-arg>Object(A0</template-arg><template-arg>A1)</template-arg></specialization><inherit access="public">transform&lt; boost::proto::make&lt; Object(A0, A1)&gt; &gt;</inherit><purpose>A PrimitiveTransform which computes a type by evaluating any nested transforms and then constructs an object of that type with the current expression, state and data, transformed according to <computeroutput>A0</computeroutput> through <computeroutput>AN</computeroutput>. </purpose><struct name="impl"><template>
+ </template><specialization><template-arg>Object(A0</template-arg><template-arg>A1)</template-arg></specialization><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>A PrimitiveTransform which computes a type by evaluating any nested transforms and then constructs an object of that type with the current expression, state and data, transformed according to <computeroutput>A0</computeroutput> through <computeroutput>AN</computeroutput>. </purpose><struct name="impl"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><typedef name="result_type"><purpose><computeroutput>make&lt;Object&gt;::result&lt;void(Expr, State, Data)&gt;::type</computeroutput> </purpose><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl::expr_param</paramtype><description><para>The current expression </para></description></parameter><parameter name="state"><paramtype>typename impl::state_param</paramtype><description><para>The current state </para></description></parameter><parameter name="data"><paramtype>typename impl::data_param</paramtype><description><para>An arbitrary data </para></description></parameter><description><para>Let <computeroutput>ax</computeroutput> be <computeroutput>when&lt;_, Ax&gt;()(expr, state, data)</computeroutput> for each <computeroutput>x</computeroutput> in <computeroutput>[0,N]</computeroutput>. Let <computeroutput>T</computeroutput> be <computer
output>result&lt;void(Expr, State, Data)&gt;::type</computeroutput>. Return <computeroutput>T(a0, a1,... aN)</computeroutput>.</para><para>
+ </template><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><purpose><computeroutput>make&lt;Object&gt;::result&lt;void(Expr, State, Data)&gt;::type</computeroutput> </purpose><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl::expr_param</paramtype><description><para>The current expression </para></description></parameter><parameter name="state"><paramtype>typename impl::state_param</paramtype><description><para>The current state </para></description></parameter><parameter name="data"><paramtype>typename impl::data_param</paramtype><description><para>An arbitrary data </para></description></parameter><description><para>Let <computeroutput>ax</computeroutput> be <computeroutput>when&lt;_, Ax&gt;()(expr, state, data)</computeroutput> for each <computeroutput>x</computeroutput> in <
computeroutput>[0,N]</computeroutput>. Let <computeroutput>T</computeroutput> be <computeroutput>result&lt;void(Expr, State, Data)&gt;::type</computeroutput>. Return <computeroutput>T(a0, a1,... aN)</computeroutput>.</para><para>
 </para></description></method></method-group></struct></struct-specialization><struct-specialization name="make"><template>
       <template-type-parameter name="Object"/>
       <template-type-parameter name="A0"/>
       <template-type-parameter name="A1"/>
       <template-type-parameter name="A2"/>
- </template><specialization><template-arg>Object(A0</template-arg><template-arg>A1</template-arg><template-arg>A2)</template-arg></specialization><inherit access="public">transform&lt; boost::proto::make&lt; Object(A0, A1, A2)&gt; &gt;</inherit><purpose>A PrimitiveTransform which computes a type by evaluating any nested transforms and then constructs an object of that type with the current expression, state and data, transformed according to <computeroutput>A0</computeroutput> through <computeroutput>AN</computeroutput>. </purpose><struct name="impl"><template>
+ </template><specialization><template-arg>Object(A0</template-arg><template-arg>A1</template-arg><template-arg>A2)</template-arg></specialization><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>A PrimitiveTransform which computes a type by evaluating any nested transforms and then constructs an object of that type with the current expression, state and data, transformed according to <computeroutput>A0</computeroutput> through <computeroutput>AN</computeroutput>. </purpose><struct name="impl"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><typedef name="result_type"><purpose><computeroutput>make&lt;Object&gt;::result&lt;void(Expr, State, Data)&gt;::type</computeroutput> </purpose><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl::expr_param</paramtype><description><para>The current expression </para></description></parameter><parameter name="state"><paramtype>typename impl::state_param</paramtype><description><para>The current state </para></description></parameter><parameter name="data"><paramtype>typename impl::data_param</paramtype><description><para>An arbitrary data </para></description></parameter><description><para>Let <computeroutput>ax</computeroutput> be <computeroutput>when&lt;_, Ax&gt;()(expr, state, data)</computeroutput> for each <computeroutput>x</computeroutput> in <computeroutput>[0,N]</computeroutput>. Let <computeroutput>T</computeroutput> be <computer
output>result&lt;void(Expr, State, Data)&gt;::type</computeroutput>. Return <computeroutput>T(a0, a1,... aN)</computeroutput>.</para><para>
+ </template><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><purpose><computeroutput>make&lt;Object&gt;::result&lt;void(Expr, State, Data)&gt;::type</computeroutput> </purpose><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl::expr_param</paramtype><description><para>The current expression </para></description></parameter><parameter name="state"><paramtype>typename impl::state_param</paramtype><description><para>The current state </para></description></parameter><parameter name="data"><paramtype>typename impl::data_param</paramtype><description><para>An arbitrary data </para></description></parameter><description><para>Let <computeroutput>ax</computeroutput> be <computeroutput>when&lt;_, Ax&gt;()(expr, state, data)</computeroutput> for each <computeroutput>x</computeroutput> in <
computeroutput>[0,N]</computeroutput>. Let <computeroutput>T</computeroutput> be <computeroutput>result&lt;void(Expr, State, Data)&gt;::type</computeroutput>. Return <computeroutput>T(a0, a1,... aN)</computeroutput>.</para><para>
 </para></description></method></method-group></struct></struct-specialization><struct-specialization name="make"><template>
       <template-type-parameter name="Object"/>
       <template-type-parameter name="A0"/>
       <template-type-parameter name="A1"/>
       <template-type-parameter name="A2"/>
       <template-type-parameter name="A3"/>
- </template><specialization><template-arg>Object(A0</template-arg><template-arg>A1</template-arg><template-arg>A2</template-arg><template-arg>A3)</template-arg></specialization><inherit access="public">transform&lt; boost::proto::make&lt; Object(A0, A1, A2, A3)&gt; &gt;</inherit><purpose>A PrimitiveTransform which computes a type by evaluating any nested transforms and then constructs an object of that type with the current expression, state and data, transformed according to <computeroutput>A0</computeroutput> through <computeroutput>AN</computeroutput>. </purpose><struct name="impl"><template>
+ </template><specialization><template-arg>Object(A0</template-arg><template-arg>A1</template-arg><template-arg>A2</template-arg><template-arg>A3)</template-arg></specialization><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>A PrimitiveTransform which computes a type by evaluating any nested transforms and then constructs an object of that type with the current expression, state and data, transformed according to <computeroutput>A0</computeroutput> through <computeroutput>AN</computeroutput>. </purpose><struct name="impl"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><typedef name="result_type"><purpose><computeroutput>make&lt;Object&gt;::result&lt;void(Expr, State, Data)&gt;::type</computeroutput> </purpose><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl::expr_param</paramtype><description><para>The current expression </para></description></parameter><parameter name="state"><paramtype>typename impl::state_param</paramtype><description><para>The current state </para></description></parameter><parameter name="data"><paramtype>typename impl::data_param</paramtype><description><para>An arbitrary data </para></description></parameter><description><para>Let <computeroutput>ax</computeroutput> be <computeroutput>when&lt;_, Ax&gt;()(expr, state, data)</computeroutput> for each <computeroutput>x</computeroutput> in <computeroutput>[0,N]</computeroutput>. Let <computeroutput>T</computeroutput> be <computer
output>result&lt;void(Expr, State, Data)&gt;::type</computeroutput>. Return <computeroutput>T(a0, a1,... aN)</computeroutput>.</para><para>
+ </template><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><purpose><computeroutput>make&lt;Object&gt;::result&lt;void(Expr, State, Data)&gt;::type</computeroutput> </purpose><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl::expr_param</paramtype><description><para>The current expression </para></description></parameter><parameter name="state"><paramtype>typename impl::state_param</paramtype><description><para>The current state </para></description></parameter><parameter name="data"><paramtype>typename impl::data_param</paramtype><description><para>An arbitrary data </para></description></parameter><description><para>Let <computeroutput>ax</computeroutput> be <computeroutput>when&lt;_, Ax&gt;()(expr, state, data)</computeroutput> for each <computeroutput>x</computeroutput> in <
computeroutput>[0,N]</computeroutput>. Let <computeroutput>T</computeroutput> be <computeroutput>result&lt;void(Expr, State, Data)&gt;::type</computeroutput>. Return <computeroutput>T(a0, a1,... aN)</computeroutput>.</para><para>
 </para></description></method></method-group></struct></struct-specialization><struct-specialization name="make"><template>
       <template-type-parameter name="Object"/>
       <template-type-parameter name="A0"/>
@@ -3102,14 +3227,14 @@
       <template-type-parameter name="A2"/>
       <template-type-parameter name="A3"/>
       <template-type-parameter name="A4"/>
- </template><specialization><template-arg>Object(A0</template-arg><template-arg>A1</template-arg><template-arg>A2</template-arg><template-arg>A3</template-arg><template-arg>A4)</template-arg></specialization><inherit access="public">transform&lt; boost::proto::make&lt; Object(A0, A1, A2, A3, A4)&gt; &gt;</inherit><purpose>A PrimitiveTransform which computes a type by evaluating any nested transforms and then constructs an object of that type with the current expression, state and data, transformed according to <computeroutput>A0</computeroutput> through <computeroutput>AN</computeroutput>. </purpose><struct name="impl"><template>
+ </template><specialization><template-arg>Object(A0</template-arg><template-arg>A1</template-arg><template-arg>A2</template-arg><template-arg>A3</template-arg><template-arg>A4)</template-arg></specialization><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>A PrimitiveTransform which computes a type by evaluating any nested transforms and then constructs an object of that type with the current expression, state and data, transformed according to <computeroutput>A0</computeroutput> through <computeroutput>AN</computeroutput>. </purpose><struct name="impl"><template>
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><typedef name="result_type"><purpose><computeroutput>make&lt;Object&gt;::result&lt;void(Expr, State, Data)&gt;::type</computeroutput> </purpose><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl::expr_param</paramtype><description><para>The current expression </para></description></parameter><parameter name="state"><paramtype>typename impl::state_param</paramtype><description><para>The current state </para></description></parameter><parameter name="data"><paramtype>typename impl::data_param</paramtype><description><para>An arbitrary data </para></description></parameter><description><para>Let <computeroutput>ax</computeroutput> be <computeroutput>when&lt;_, Ax&gt;()(expr, state, data)</computeroutput> for each <computeroutput>x</computeroutput> in <computeroutput>[0,N]</computeroutput>. Let <computeroutput>T</computeroutput> be <computer
output>result&lt;void(Expr, State, Data)&gt;::type</computeroutput>. Return <computeroutput>T(a0, a1,... aN)</computeroutput>.</para><para>
+ </template><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="result_type"><purpose><computeroutput>make&lt;Object&gt;::result&lt;void(Expr, State, Data)&gt;::type</computeroutput> </purpose><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl::expr_param</paramtype><description><para>The current expression </para></description></parameter><parameter name="state"><paramtype>typename impl::state_param</paramtype><description><para>The current state </para></description></parameter><parameter name="data"><paramtype>typename impl::data_param</paramtype><description><para>An arbitrary data </para></description></parameter><description><para>Let <computeroutput>ax</computeroutput> be <computeroutput>when&lt;_, Ax&gt;()(expr, state, data)</computeroutput> for each <computeroutput>x</computeroutput> in <
computeroutput>[0,N]</computeroutput>. Let <computeroutput>T</computeroutput> be <computeroutput>result&lt;void(Expr, State, Data)&gt;::type</computeroutput>. Return <computeroutput>T(a0, a1,... aN)</computeroutput>.</para><para>
 </para></description></method></method-group></struct></struct-specialization></namespace></namespace></header><header name="boost/proto/transform/pass_through.hpp"><para>Definition of the pass_through transform, which is the default transform of all of the expression generator metafunctions such as unary_plus&lt;&gt;, plus&lt;&gt; and nary_expr&lt;&gt;. </para><namespace name="boost"><namespace name="proto"><struct name="pass_through"><template>
       <template-type-parameter name="Grammar"/>
- </template><inherit access="public">transform&lt; boost::proto::pass_through&lt; Grammar &gt; &gt;</inherit><purpose>A PrimitiveTransform that transforms the child expressions of an expression node according to the corresponding children of a Grammar. </purpose><description><para>Given a Grammar such as <computeroutput>plus&lt;T0, T1&gt;</computeroutput>, an expression type that matches the grammar such as <computeroutput>plus&lt;E0, E1&gt;::type</computeroutput>, a state <computeroutput>S</computeroutput> and a data <computeroutput>V</computeroutput>, the result of applying the <computeroutput>pass_through&lt;plus&lt;T0, T1&gt; &gt;</computeroutput> transform is:</para><para><programlisting> plus&lt;
+ </template><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>A PrimitiveTransform that transforms the child expressions of an expression node according to the corresponding children of a Grammar. </purpose><description><para>Given a Grammar such as <computeroutput>plus&lt;T0, T1&gt;</computeroutput>, an expression type that matches the grammar such as <computeroutput>plus&lt;E0, E1&gt;::type</computeroutput>, a state <computeroutput>S</computeroutput> and a data <computeroutput>V</computeroutput>, the result of applying the <computeroutput>pass_through&lt;plus&lt;T0, T1&gt; &gt;</computeroutput> transform is:</para><para><programlisting> plus&lt;
      T0::result&lt;void(E0, S, V)&gt;::type
    , T1::result&lt;void(E1, S, V)&gt;::type
  &gt;::type
@@ -3161,7 +3286,7 @@
 </programlisting> </para></description></struct><struct-specialization name="when"><template>
       <template-type-parameter name="Grammar"/>
       <template-type-parameter name="R"/>
- </template><specialization><template-arg>Grammar</template-arg><template-arg>R()</template-arg></specialization><inherit access="public">transform&lt; boost::proto::when&lt; Grammar, R()&gt; &gt;</inherit><purpose>A grammar element and a PrimitiveTransform that associates a transform with the grammar. </purpose><description><para>Use <computeroutput>when&lt;&gt;</computeroutput> to override a grammar's default transform with a custom transform. It is for used when composing larger transforms by associating smaller transforms with individual rules in your grammar, as in the following transform which counts the number of terminals in an expression.</para><para><programlisting> // Count the terminals in an expression tree.
+ </template><specialization><template-arg>Grammar</template-arg><template-arg>R()</template-arg></specialization><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>A grammar element and a PrimitiveTransform that associates a transform with the grammar. </purpose><description><para>Use <computeroutput>when&lt;&gt;</computeroutput> to override a grammar's default transform with a custom transform. It is for used when composing larger transforms by associating smaller transforms with individual rules in your grammar, as in the following transform which counts the number of terminals in an expression.</para><para><programlisting> // Count the terminals in an expression tree.
  // Must be invoked with initial state == mpl::int_&lt;0&gt;().
  struct CountLeaves
    : or_&lt;
@@ -3173,14 +3298,14 @@
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><typedef name="call_"><type><classname>call</classname>&lt; R()&gt;</type></typedef><typedef name="make_"><type><classname>make</classname>&lt; R()&gt;</type></typedef><typedef name="which"><type>mpl::if_c&lt; <classname>is_callable</classname>&lt; R &gt;::value, <classname>call_</classname>, <classname>make_</classname> &gt;::type</type></typedef><typedef name="result_type"><type>which::template impl&lt; Expr, State, Data &gt;::result_type</type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl::expr_param</paramtype><description><para>The current expression </para></description></parameter><parameter name="state"><paramtype>typename impl::state_param</paramtype><description><para>The current state </para></description></parameter><parameter name="data"><paramtype>typename impl::data_param</paramtype><description><para>An arbitrary data </para></description></parameter><descripti
on><para>Evaluate <computeroutput>R(A0,A1,...)</computeroutput> as a transform either with <computeroutput>call&lt;&gt;</computeroutput> or with <computeroutput>make&lt;&gt;</computeroutput> depending on whether <computeroutput>is_callable&lt;R&gt;::value</computeroutput> is <computeroutput>true</computeroutput> or <computeroutput>false</computeroutput>.</para><para>
+ </template><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="call_"><type><classname>call</classname>&lt; R()&gt;</type></typedef><typedef name="make_"><type><classname>make</classname>&lt; R()&gt;</type></typedef><typedef name="which"><type>mpl::if_c&lt; <classname>is_callable</classname>&lt; R &gt;::value, <classname>call_</classname>, <classname>make_</classname> &gt;::type</type></typedef><typedef name="result_type"><type>which::template impl&lt; Expr, State, Data &gt;::result_type</type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl::expr_param</paramtype><description><para>The current expression </para></description></parameter><parameter name="state"><paramtype>typename impl::state_param</paramtype><description><para>The current state </para></description></parameter><parameter name="data"><paramtype>typename impl::data_param</
paramtype><description><para>An arbitrary data </para></description></parameter><description><para>Evaluate <computeroutput>R(A0,A1,...)</computeroutput> as a transform either with <computeroutput>call&lt;&gt;</computeroutput> or with <computeroutput>make&lt;&gt;</computeroutput> depending on whether <computeroutput>is_callable&lt;R&gt;::value</computeroutput> is <computeroutput>true</computeroutput> or <computeroutput>false</computeroutput>.</para><para>
 
 
 </para></description><requires><para><computeroutput>matches&lt;Expr, Grammar&gt;::value</computeroutput> is <computeroutput>true</computeroutput> </para></requires><returns><para><computeroutput>result&lt;void(Expr, State, Data)&gt;::impl()(expr, state, data)</computeroutput> </para></returns></method></method-group></struct><typedef name="proto_base_expr"><type>Grammar::proto_base_expr</type></typedef></struct-specialization><struct-specialization name="when"><template>
       <template-type-parameter name="Grammar"/>
       <template-type-parameter name="R"/>
       <template-type-parameter name="A0"/>
- </template><specialization><template-arg>Grammar</template-arg><template-arg>R(A0)</template-arg></specialization><inherit access="public">transform&lt; boost::proto::when&lt; Grammar, R(A0)&gt; &gt;</inherit><purpose>A grammar element and a PrimitiveTransform that associates a transform with the grammar. </purpose><description><para>Use <computeroutput>when&lt;&gt;</computeroutput> to override a grammar's default transform with a custom transform. It is for used when composing larger transforms by associating smaller transforms with individual rules in your grammar, as in the following transform which counts the number of terminals in an expression.</para><para><programlisting> // Count the terminals in an expression tree.
+ </template><specialization><template-arg>Grammar</template-arg><template-arg>R(A0)</template-arg></specialization><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>A grammar element and a PrimitiveTransform that associates a transform with the grammar. </purpose><description><para>Use <computeroutput>when&lt;&gt;</computeroutput> to override a grammar's default transform with a custom transform. It is for used when composing larger transforms by associating smaller transforms with individual rules in your grammar, as in the following transform which counts the number of terminals in an expression.</para><para><programlisting> // Count the terminals in an expression tree.
  // Must be invoked with initial state == mpl::int_&lt;0&gt;().
  struct CountLeaves
    : or_&lt;
@@ -3192,7 +3317,7 @@
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><typedef name="call_"><type><classname>call</classname>&lt; R(A0)&gt;</type></typedef><typedef name="make_"><type><classname>make</classname>&lt; R(A0)&gt;</type></typedef><typedef name="which"><type>mpl::if_c&lt; <classname>is_callable</classname>&lt; R &gt;::value, <classname>call_</classname>, <classname>make_</classname> &gt;::type</type></typedef><typedef name="result_type"><type>which::template impl&lt; Expr, State, Data &gt;::result_type</type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl::expr_param</paramtype><description><para>The current expression </para></description></parameter><parameter name="state"><paramtype>typename impl::state_param</paramtype><description><para>The current state </para></description></parameter><parameter name="data"><paramtype>typename impl::data_param</paramtype><description><para>An arbitrary data </para></description></parameter><descr
iption><para>Evaluate <computeroutput>R(A0,A1,...)</computeroutput> as a transform either with <computeroutput>call&lt;&gt;</computeroutput> or with <computeroutput>make&lt;&gt;</computeroutput> depending on whether <computeroutput>is_callable&lt;R&gt;::value</computeroutput> is <computeroutput>true</computeroutput> or <computeroutput>false</computeroutput>.</para><para>
+ </template><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="call_"><type><classname>call</classname>&lt; R(A0)&gt;</type></typedef><typedef name="make_"><type><classname>make</classname>&lt; R(A0)&gt;</type></typedef><typedef name="which"><type>mpl::if_c&lt; <classname>is_callable</classname>&lt; R &gt;::value, <classname>call_</classname>, <classname>make_</classname> &gt;::type</type></typedef><typedef name="result_type"><type>which::template impl&lt; Expr, State, Data &gt;::result_type</type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl::expr_param</paramtype><description><para>The current expression </para></description></parameter><parameter name="state"><paramtype>typename impl::state_param</paramtype><description><para>The current state </para></description></parameter><parameter name="data"><paramtype>typename impl::data_par
am</paramtype><description><para>An arbitrary data </para></description></parameter><description><para>Evaluate <computeroutput>R(A0,A1,...)</computeroutput> as a transform either with <computeroutput>call&lt;&gt;</computeroutput> or with <computeroutput>make&lt;&gt;</computeroutput> depending on whether <computeroutput>is_callable&lt;R&gt;::value</computeroutput> is <computeroutput>true</computeroutput> or <computeroutput>false</computeroutput>.</para><para>
 
 
 </para></description><requires><para><computeroutput>matches&lt;Expr, Grammar&gt;::value</computeroutput> is <computeroutput>true</computeroutput> </para></requires><returns><para><computeroutput>result&lt;void(Expr, State, Data)&gt;::impl()(expr, state, data)</computeroutput> </para></returns></method></method-group></struct><typedef name="proto_base_expr"><type>Grammar::proto_base_expr</type></typedef></struct-specialization><struct-specialization name="when"><template>
@@ -3200,7 +3325,7 @@
       <template-type-parameter name="R"/>
       <template-type-parameter name="A0"/>
       <template-type-parameter name="A1"/>
- </template><specialization><template-arg>Grammar</template-arg><template-arg>R(A0</template-arg><template-arg>A1)</template-arg></specialization><inherit access="public">transform&lt; boost::proto::when&lt; Grammar, R(A0, A1)&gt; &gt;</inherit><purpose>A grammar element and a PrimitiveTransform that associates a transform with the grammar. </purpose><description><para>Use <computeroutput>when&lt;&gt;</computeroutput> to override a grammar's default transform with a custom transform. It is for used when composing larger transforms by associating smaller transforms with individual rules in your grammar, as in the following transform which counts the number of terminals in an expression.</para><para><programlisting> // Count the terminals in an expression tree.
+ </template><specialization><template-arg>Grammar</template-arg><template-arg>R(A0</template-arg><template-arg>A1)</template-arg></specialization><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>A grammar element and a PrimitiveTransform that associates a transform with the grammar. </purpose><description><para>Use <computeroutput>when&lt;&gt;</computeroutput> to override a grammar's default transform with a custom transform. It is for used when composing larger transforms by associating smaller transforms with individual rules in your grammar, as in the following transform which counts the number of terminals in an expression.</para><para><programlisting> // Count the terminals in an expression tree.
  // Must be invoked with initial state == mpl::int_&lt;0&gt;().
  struct CountLeaves
    : or_&lt;
@@ -3212,7 +3337,7 @@
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><typedef name="call_"><type><classname>call</classname>&lt; R(A0, A1)&gt;</type></typedef><typedef name="make_"><type><classname>make</classname>&lt; R(A0, A1)&gt;</type></typedef><typedef name="which"><type>mpl::if_c&lt; <classname>is_callable</classname>&lt; R &gt;::value, <classname>call_</classname>, <classname>make_</classname> &gt;::type</type></typedef><typedef name="result_type"><type>which::template impl&lt; Expr, State, Data &gt;::result_type</type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl::expr_param</paramtype><description><para>The current expression </para></description></parameter><parameter name="state"><paramtype>typename impl::state_param</paramtype><description><para>The current state </para></description></parameter><parameter name="data"><paramtype>typename impl::data_param</paramtype><description><para>An arbitrary data </para></description></paramete
r><description><para>Evaluate <computeroutput>R(A0,A1,...)</computeroutput> as a transform either with <computeroutput>call&lt;&gt;</computeroutput> or with <computeroutput>make&lt;&gt;</computeroutput> depending on whether <computeroutput>is_callable&lt;R&gt;::value</computeroutput> is <computeroutput>true</computeroutput> or <computeroutput>false</computeroutput>.</para><para>
+ </template><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="call_"><type><classname>call</classname>&lt; R(A0, A1)&gt;</type></typedef><typedef name="make_"><type><classname>make</classname>&lt; R(A0, A1)&gt;</type></typedef><typedef name="which"><type>mpl::if_c&lt; <classname>is_callable</classname>&lt; R &gt;::value, <classname>call_</classname>, <classname>make_</classname> &gt;::type</type></typedef><typedef name="result_type"><type>which::template impl&lt; Expr, State, Data &gt;::result_type</type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl::expr_param</paramtype><description><para>The current expression </para></description></parameter><parameter name="state"><paramtype>typename impl::state_param</paramtype><description><para>The current state </para></description></parameter><parameter name="data"><paramtype>typename impl::
data_param</paramtype><description><para>An arbitrary data </para></description></parameter><description><para>Evaluate <computeroutput>R(A0,A1,...)</computeroutput> as a transform either with <computeroutput>call&lt;&gt;</computeroutput> or with <computeroutput>make&lt;&gt;</computeroutput> depending on whether <computeroutput>is_callable&lt;R&gt;::value</computeroutput> is <computeroutput>true</computeroutput> or <computeroutput>false</computeroutput>.</para><para>
 
 
 </para></description><requires><para><computeroutput>matches&lt;Expr, Grammar&gt;::value</computeroutput> is <computeroutput>true</computeroutput> </para></requires><returns><para><computeroutput>result&lt;void(Expr, State, Data)&gt;::impl()(expr, state, data)</computeroutput> </para></returns></method></method-group></struct><typedef name="proto_base_expr"><type>Grammar::proto_base_expr</type></typedef></struct-specialization><struct-specialization name="when"><template>
@@ -3221,7 +3346,7 @@
       <template-type-parameter name="A0"/>
       <template-type-parameter name="A1"/>
       <template-type-parameter name="A2"/>
- </template><specialization><template-arg>Grammar</template-arg><template-arg>R(A0</template-arg><template-arg>A1</template-arg><template-arg>A2)</template-arg></specialization><inherit access="public">transform&lt; boost::proto::when&lt; Grammar, R(A0, A1, A2)&gt; &gt;</inherit><purpose>A grammar element and a PrimitiveTransform that associates a transform with the grammar. </purpose><description><para>Use <computeroutput>when&lt;&gt;</computeroutput> to override a grammar's default transform with a custom transform. It is for used when composing larger transforms by associating smaller transforms with individual rules in your grammar, as in the following transform which counts the number of terminals in an expression.</para><para><programlisting> // Count the terminals in an expression tree.
+ </template><specialization><template-arg>Grammar</template-arg><template-arg>R(A0</template-arg><template-arg>A1</template-arg><template-arg>A2)</template-arg></specialization><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>A grammar element and a PrimitiveTransform that associates a transform with the grammar. </purpose><description><para>Use <computeroutput>when&lt;&gt;</computeroutput> to override a grammar's default transform with a custom transform. It is for used when composing larger transforms by associating smaller transforms with individual rules in your grammar, as in the following transform which counts the number of terminals in an expression.</para><para><programlisting> // Count the terminals in an expression tree.
  // Must be invoked with initial state == mpl::int_&lt;0&gt;().
  struct CountLeaves
    : or_&lt;
@@ -3233,7 +3358,7 @@
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><typedef name="call_"><type><classname>call</classname>&lt; R(A0, A1, A2)&gt;</type></typedef><typedef name="make_"><type><classname>make</classname>&lt; R(A0, A1, A2)&gt;</type></typedef><typedef name="which"><type>mpl::if_c&lt; <classname>is_callable</classname>&lt; R &gt;::value, <classname>call_</classname>, <classname>make_</classname> &gt;::type</type></typedef><typedef name="result_type"><type>which::template impl&lt; Expr, State, Data &gt;::result_type</type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl::expr_param</paramtype><description><para>The current expression </para></description></parameter><parameter name="state"><paramtype>typename impl::state_param</paramtype><description><para>The current state </para></description></parameter><parameter name="data"><paramtype>typename impl::data_param</paramtype><description><para>An arbitrary data </para></description></
parameter><description><para>Evaluate <computeroutput>R(A0,A1,...)</computeroutput> as a transform either with <computeroutput>call&lt;&gt;</computeroutput> or with <computeroutput>make&lt;&gt;</computeroutput> depending on whether <computeroutput>is_callable&lt;R&gt;::value</computeroutput> is <computeroutput>true</computeroutput> or <computeroutput>false</computeroutput>.</para><para>
+ </template><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="call_"><type><classname>call</classname>&lt; R(A0, A1, A2)&gt;</type></typedef><typedef name="make_"><type><classname>make</classname>&lt; R(A0, A1, A2)&gt;</type></typedef><typedef name="which"><type>mpl::if_c&lt; <classname>is_callable</classname>&lt; R &gt;::value, <classname>call_</classname>, <classname>make_</classname> &gt;::type</type></typedef><typedef name="result_type"><type>which::template impl&lt; Expr, State, Data &gt;::result_type</type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl::expr_param</paramtype><description><para>The current expression </para></description></parameter><parameter name="state"><paramtype>typename impl::state_param</paramtype><description><para>The current state </para></description></parameter><parameter name="data"><paramtype>typenam
e impl::data_param</paramtype><description><para>An arbitrary data </para></description></parameter><description><para>Evaluate <computeroutput>R(A0,A1,...)</computeroutput> as a transform either with <computeroutput>call&lt;&gt;</computeroutput> or with <computeroutput>make&lt;&gt;</computeroutput> depending on whether <computeroutput>is_callable&lt;R&gt;::value</computeroutput> is <computeroutput>true</computeroutput> or <computeroutput>false</computeroutput>.</para><para>
 
 
 </para></description><requires><para><computeroutput>matches&lt;Expr, Grammar&gt;::value</computeroutput> is <computeroutput>true</computeroutput> </para></requires><returns><para><computeroutput>result&lt;void(Expr, State, Data)&gt;::impl()(expr, state, data)</computeroutput> </para></returns></method></method-group></struct><typedef name="proto_base_expr"><type>Grammar::proto_base_expr</type></typedef></struct-specialization><struct-specialization name="when"><template>
@@ -3243,7 +3368,7 @@
       <template-type-parameter name="A1"/>
       <template-type-parameter name="A2"/>
       <template-type-parameter name="A3"/>
- </template><specialization><template-arg>Grammar</template-arg><template-arg>R(A0</template-arg><template-arg>A1</template-arg><template-arg>A2</template-arg><template-arg>A3)</template-arg></specialization><inherit access="public">transform&lt; boost::proto::when&lt; Grammar, R(A0, A1, A2, A3)&gt; &gt;</inherit><purpose>A grammar element and a PrimitiveTransform that associates a transform with the grammar. </purpose><description><para>Use <computeroutput>when&lt;&gt;</computeroutput> to override a grammar's default transform with a custom transform. It is for used when composing larger transforms by associating smaller transforms with individual rules in your grammar, as in the following transform which counts the number of terminals in an expression.</para><para><programlisting> // Count the terminals in an expression tree.
+ </template><specialization><template-arg>Grammar</template-arg><template-arg>R(A0</template-arg><template-arg>A1</template-arg><template-arg>A2</template-arg><template-arg>A3)</template-arg></specialization><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>A grammar element and a PrimitiveTransform that associates a transform with the grammar. </purpose><description><para>Use <computeroutput>when&lt;&gt;</computeroutput> to override a grammar's default transform with a custom transform. It is for used when composing larger transforms by associating smaller transforms with individual rules in your grammar, as in the following transform which counts the number of terminals in an expression.</para><para><programlisting> // Count the terminals in an expression tree.
  // Must be invoked with initial state == mpl::int_&lt;0&gt;().
  struct CountLeaves
    : or_&lt;
@@ -3255,7 +3380,7 @@
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><typedef name="call_"><type><classname>call</classname>&lt; R(A0, A1, A2, A3)&gt;</type></typedef><typedef name="make_"><type><classname>make</classname>&lt; R(A0, A1, A2, A3)&gt;</type></typedef><typedef name="which"><type>mpl::if_c&lt; <classname>is_callable</classname>&lt; R &gt;::value, <classname>call_</classname>, <classname>make_</classname> &gt;::type</type></typedef><typedef name="result_type"><type>which::template impl&lt; Expr, State, Data &gt;::result_type</type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl::expr_param</paramtype><description><para>The current expression </para></description></parameter><parameter name="state"><paramtype>typename impl::state_param</paramtype><description><para>The current state </para></description></parameter><parameter name="data"><paramtype>typename impl::data_param</paramtype><description><para>An arbitrary data </para></descri
ption></parameter><description><para>Evaluate <computeroutput>R(A0,A1,...)</computeroutput> as a transform either with <computeroutput>call&lt;&gt;</computeroutput> or with <computeroutput>make&lt;&gt;</computeroutput> depending on whether <computeroutput>is_callable&lt;R&gt;::value</computeroutput> is <computeroutput>true</computeroutput> or <computeroutput>false</computeroutput>.</para><para>
+ </template><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="call_"><type><classname>call</classname>&lt; R(A0, A1, A2, A3)&gt;</type></typedef><typedef name="make_"><type><classname>make</classname>&lt; R(A0, A1, A2, A3)&gt;</type></typedef><typedef name="which"><type>mpl::if_c&lt; <classname>is_callable</classname>&lt; R &gt;::value, <classname>call_</classname>, <classname>make_</classname> &gt;::type</type></typedef><typedef name="result_type"><type>which::template impl&lt; Expr, State, Data &gt;::result_type</type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl::expr_param</paramtype><description><para>The current expression </para></description></parameter><parameter name="state"><paramtype>typename impl::state_param</paramtype><description><para>The current state </para></description></parameter><parameter name="data"><paramtype
>typename impl::data_param</paramtype><description><para>An arbitrary data </para></description></parameter><description><para>Evaluate <computeroutput>R(A0,A1,...)</computeroutput> as a transform either with <computeroutput>call&lt;&gt;</computeroutput> or with <computeroutput>make&lt;&gt;</computeroutput> depending on whether <computeroutput>is_callable&lt;R&gt;::value</computeroutput> is <computeroutput>true</computeroutput> or <computeroutput>false</computeroutput>.</para><para>
 
 
 </para></description><requires><para><computeroutput>matches&lt;Expr, Grammar&gt;::value</computeroutput> is <computeroutput>true</computeroutput> </para></requires><returns><para><computeroutput>result&lt;void(Expr, State, Data)&gt;::impl()(expr, state, data)</computeroutput> </para></returns></method></method-group></struct><typedef name="proto_base_expr"><type>Grammar::proto_base_expr</type></typedef></struct-specialization><struct-specialization name="when"><template>
@@ -3266,7 +3391,7 @@
       <template-type-parameter name="A2"/>
       <template-type-parameter name="A3"/>
       <template-type-parameter name="A4"/>
- </template><specialization><template-arg>Grammar</template-arg><template-arg>R(A0</template-arg><template-arg>A1</template-arg><template-arg>A2</template-arg><template-arg>A3</template-arg><template-arg>A4)</template-arg></specialization><inherit access="public">transform&lt; boost::proto::when&lt; Grammar, R(A0, A1, A2, A3, A4)&gt; &gt;</inherit><purpose>A grammar element and a PrimitiveTransform that associates a transform with the grammar. </purpose><description><para>Use <computeroutput>when&lt;&gt;</computeroutput> to override a grammar's default transform with a custom transform. It is for used when composing larger transforms by associating smaller transforms with individual rules in your grammar, as in the following transform which counts the number of terminals in an expression.</para><para><programlisting> // Count the terminals in an expression tree.
+ </template><specialization><template-arg>Grammar</template-arg><template-arg>R(A0</template-arg><template-arg>A1</template-arg><template-arg>A2</template-arg><template-arg>A3</template-arg><template-arg>A4)</template-arg></specialization><inherit access="public">boost::proto::transform&lt; PrimitiveTransform, Base &gt;</inherit><purpose>A grammar element and a PrimitiveTransform that associates a transform with the grammar. </purpose><description><para>Use <computeroutput>when&lt;&gt;</computeroutput> to override a grammar's default transform with a custom transform. It is for used when composing larger transforms by associating smaller transforms with individual rules in your grammar, as in the following transform which counts the number of terminals in an expression.</para><para><programlisting> // Count the terminals in an expression tree.
  // Must be invoked with initial state == mpl::int_&lt;0&gt;().
  struct CountLeaves
    : or_&lt;
@@ -3278,7 +3403,7 @@
       <template-type-parameter name="Expr"/>
       <template-type-parameter name="State"/>
       <template-type-parameter name="Data"/>
- </template><typedef name="call_"><type><classname>call</classname>&lt; R(A0, A1, A2, A3, A4)&gt;</type></typedef><typedef name="make_"><type><classname>make</classname>&lt; R(A0, A1, A2, A3, A4)&gt;</type></typedef><typedef name="which"><type>mpl::if_c&lt; <classname>is_callable</classname>&lt; R &gt;::value, <classname>call_</classname>, <classname>make_</classname> &gt;::type</type></typedef><typedef name="result_type"><type>which::template impl&lt; Expr, State, Data &gt;::result_type</type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl::expr_param</paramtype><description><para>The current expression </para></description></parameter><parameter name="state"><paramtype>typename impl::state_param</paramtype><description><para>The current state </para></description></parameter><parameter name="data"><paramtype>typename impl::data_param</paramtype><description><para>An arbitrary data </para>
</description></parameter><description><para>Evaluate <computeroutput>R(A0,A1,...)</computeroutput> as a transform either with <computeroutput>call&lt;&gt;</computeroutput> or with <computeroutput>make&lt;&gt;</computeroutput> depending on whether <computeroutput>is_callable&lt;R&gt;::value</computeroutput> is <computeroutput>true</computeroutput> or <computeroutput>false</computeroutput>.</para><para>
+ </template><inherit access="public">boost::proto::transform_impl&lt; Expr, State, Data &gt;</inherit><typedef name="call_"><type><classname>call</classname>&lt; R(A0, A1, A2, A3, A4)&gt;</type></typedef><typedef name="make_"><type><classname>make</classname>&lt; R(A0, A1, A2, A3, A4)&gt;</type></typedef><typedef name="which"><type>mpl::if_c&lt; <classname>is_callable</classname>&lt; R &gt;::value, <classname>call_</classname>, <classname>make_</classname> &gt;::type</type></typedef><typedef name="result_type"><type>which::template impl&lt; Expr, State, Data &gt;::result_type</type></typedef><method-group name="public member functions"><method name="operator()" cv="const"><type>result_type</type><parameter name="expr"><paramtype>typename impl::expr_param</paramtype><description><para>The current expression </para></description></parameter><parameter name="state"><paramtype>typename impl::state_param</paramtype><description><para>The current state </para></description></parameter><parameter name="data"><p
aramtype>typename impl::data_param</paramtype><description><para>An arbitrary data </para></description></parameter><description><para>Evaluate <computeroutput>R(A0,A1,...)</computeroutput> as a transform either with <computeroutput>call&lt;&gt;</computeroutput> or with <computeroutput>make&lt;&gt;</computeroutput> depending on whether <computeroutput>is_callable&lt;R&gt;::value</computeroutput> is <computeroutput>true</computeroutput> or <computeroutput>false</computeroutput>.</para><para>
 
 
 </para></description><requires><para><computeroutput>matches&lt;Expr, Grammar&gt;::value</computeroutput> is <computeroutput>true</computeroutput> </para></requires><returns><para><computeroutput>result&lt;void(Expr, State, Data)&gt;::impl()(expr, state, data)</computeroutput> </para></returns></method></method-group></struct><typedef name="proto_base_expr"><type>Grammar::proto_base_expr</type></typedef></struct-specialization></namespace></namespace></header></library-reference>


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk