Boost C++ Libraries: Ticket #6268: Conflict between fusion and phoenix operator< https://svn.boost.org/trac10/ticket/6268 <p> When using the sequence_facade extension mechanism to adapt my own Fusion sequences, I experience a conflict between fusion and phoenix's operator&lt;. The problem is that in a lambda expression like "arg1 &lt; s" where "s" is a Fusion sequence defined using sequence_facade, Fusion tries to instantiate its operator&lt;, but the instantiation gives an error because "arg1" is not a Fusion sequence and does not have "size" etc. Here is a minimal sample that reproduces the problem: #include &lt;boost/fusion/sequence/comparison.hpp&gt; #include &lt;boost/fusion/sequence/sequence_facade.hpp&gt; #include &lt;boost/phoenix/core.hpp&gt; #include &lt;boost/phoenix/operator/comparison.hpp&gt; struct foo : boost::fusion::sequence_facade&lt;foo, boost::fusion::random_access_traversal_tag&gt; { </p> <blockquote> <p> <em> Rest of the sequence_facade extension mechanism code omitted, </em> as it is not needed to reproduce the error </p> </blockquote> <p> </p> <blockquote> <p> foo() : x(), y() {} </p> </blockquote> <p> </p> <blockquote> <p> int x; int y; </p> </blockquote> <p> }; int main() { </p> <blockquote> <p> auto x = boost::phoenix::arg_names::arg1 &lt; foo(); </p> </blockquote> <p> } </p> <p> Here are the errors: </p> <p> In file included from </p> <blockquote> <p> boost/boost/fusion/view/joint_view/joint_view.hpp:15:0, </p> </blockquote> <p> from boost/boost/fusion/algorithm/transformation/push_back.hpp:11, from </p> <blockquote> <p> boost/boost/fusion/view/iterator_range/detail/segmented_iterator_ range.hpp:19,a </p> </blockquote> <p> from boost/boost/fusion/view/iterator_range/detail/segments_impl.hpp </p> <blockquote> <p> :13, </p> </blockquote> <p> from boost/boost/fusion/view/iterator_range/iterator_range.hpp:21, from boost/boost/fusion/view/iterator_range.hpp:10, from boost/boost/fusion/sequence/intrinsic/detail/segmented_begin.hpp </p> <blockquote> <p> :12, </p> </blockquote> <p> from boost/boost/fusion/sequence/intrinsic/begin.hpp:17, from boost/boost/fusion/sequence/comparison/equal_to.hpp:11, from boost/boost/fusion/sequence/comparison.hpp:10, from test.cpp:1: boost/boost/fusion/sequence/intrinsic/size.hpp: In instantiation of </p> <blockquote> <p> 'boost::fusion::extension::size_impl&lt;boost::proto::tagns_::tag::proto_expr&gt; ::unsegmented_size&lt; </p> <blockquote> <p> boost::phoenix::actor&lt; </p> <blockquote> <p> boost::proto::exprns_::basic_expr&lt; </p> <blockquote> <p> boost::proto::tagns_::tag::terminal </p> </blockquote> <p> , boost::proto::argsns_::term&lt;boost::phoenix::argument&lt;1&gt; &gt;, 0l </p> <blockquote class="citation"> <p> ': </p> </blockquote> </blockquote> </blockquote> </blockquote> <p> boost/boost/fusion/sequence/intrinsic/size.hpp:36:20: required from </p> <blockquote> <p> 'boost::fusion::extension::size_impl&lt;boost::proto::tagns_::tag::proto_expr&gt; ::apply&lt; </p> <blockquote> <p> boost::phoenix::actor&lt; </p> <blockquote> <p> boost::proto::exprns_::basic_expr&lt; </p> <blockquote> <p> boost::proto::tagns_::tag::terminal </p> </blockquote> <p> , boost::proto::argsns_::term&lt;boost::phoenix::argument&lt;1&gt; &gt;, 0l </p> <blockquote class="citation"> <p> ' </p> </blockquote> </blockquote> </blockquote> </blockquote> <p> boost/boost/fusion/sequence/intrinsic/size.hpp:68:16: required from </p> <blockquote> <p> 'boost::fusion::result_of::size&lt; </p> <blockquote> <p> boost::phoenix::actor&lt; </p> <blockquote> <p> boost::proto::exprns_::basic_expr&lt; </p> <blockquote> <p> boost::proto::tagns_::tag::terminal </p> </blockquote> <p> , boost::proto::argsns_::term&lt;boost::phoenix::argument&lt;1&gt; &gt;, 0l </p> <blockquote class="citation"> <p> ' </p> </blockquote> </blockquote> </blockquote> </blockquote> <p> boost/boost/mpl/aux_/preprocessed/gcc/equal_to.hpp:60:29: required </p> <blockquote> <p> from 'boost::mpl::equal_to_tag&lt; </p> <blockquote> <p> boost::fusion::result_of::size&lt; </p> <blockquote> <p> boost::phoenix::actor&lt; </p> <blockquote> <p> boost::proto::exprns_::basic_expr&lt; </p> <blockquote> <p> boost::proto::tagns_::tag::terminal </p> </blockquote> <p> , boost::proto::argsns_::term&lt;boost::phoenix::argument&lt;1&gt; &gt; , 0l </p> <blockquote class="citation"> <p> ' </p> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> <p> boost/boost/mpl/aux_/preprocessed/gcc/equal_to.hpp:67:8: required </p> <blockquote> <p> from 'boost::mpl::equal_to&lt; </p> <blockquote> <p> boost::fusion::result_of::size&lt; </p> <blockquote> <p> boost::phoenix::actor&lt; </p> <blockquote> <p> boost::proto::exprns_::basic_expr&lt; </p> <blockquote> <p> boost::proto::tagns_::tag::terminal </p> </blockquote> <p> , boost::proto::argsns_::term&lt;boost::phoenix::argument&lt;1&gt; &gt; , 0l </p> <blockquote class="citation"> <p> , boost::fusion::result_of::size&lt;foo&gt; ' </p> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> <p> boost/boost/mpl/aux_/nested_type_wknd.hpp:26:31: required from </p> <blockquote> <p> 'boost::mpl::aux::nested_type_wknd&lt; </p> <blockquote> <p> boost::mpl::equal_to&lt; </p> <blockquote> <p> boost::fusion::result_of::size&lt; </p> <blockquote> <p> boost::phoenix::actor&lt; </p> <blockquote> <p> boost::proto::exprns_::basic_expr&lt; </p> <blockquote> <p> boost::proto::tagns_::tag::terminal </p> </blockquote> <p> , boost::proto::argsns_::term&lt; </p> <blockquote> <blockquote> <p> boost::phoenix::argument&lt;1&gt; </p> <blockquote class="citation"> <p> , 0l , boost::fusion::result_of::size&lt;foo&gt; ' </p> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> <p> boost/boost/mpl/aux_/preprocessed/gcc/and.hpp:23:8: required from </p> <blockquote> <p> 'boost::mpl::aux::and_impl&lt; </p> <blockquote> <p> true </p> </blockquote> <p> , boost::mpl::equal_to&lt; </p> <blockquote> <blockquote> <p> boost::fusion::result_of::size&lt; </p> <blockquote> <p> boost::phoenix::actor&lt; </p> <blockquote> <p> boost::proto::exprns_::basic_expr&lt; </p> <blockquote> <p> boost::proto::tagns_::tag::terminal </p> </blockquote> <p> , boost::proto::argsns_::term&lt; </p> <blockquote> <blockquote> <p> boost::phoenix::argument&lt;1&gt; </p> <blockquote class="citation"> <p> , 0l , boost::fusion::result_of::size&lt;foo&gt; , mpl_::bool_&lt;true&gt;, mpl_::bool_&lt;true&gt;, mpl_::bool_&lt;true&gt; ' </p> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> <p> boost/boost/mpl/aux_/preprocessed/gcc/and.hpp:48:8: required from </p> <blockquote> <p> 'boost::mpl::and_&lt; </p> <blockquote> <p> boost::mpl::or_&lt; </p> <blockquote> <p> boost::fusion::traits::is_sequence&lt; </p> <blockquote> <p> boost::phoenix::actor&lt; </p> <blockquote> <p> boost::proto::exprns_::basic_expr&lt; </p> <blockquote> <p> boost::proto::tagns_::tag::terminal </p> </blockquote> <p> , boost::proto::argsns_::term&lt; </p> <blockquote> <blockquote> <p> boost::phoenix::argument&lt;1&gt; </p> <blockquote class="citation"> <p> , 0l , boost::fusion::traits::is_sequence&lt;foo&gt;, mpl_::bool_&lt;false&gt; </p> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> <p> , mpl_::bool_&lt;false&gt;, mpl_::bool_&lt;false&gt; </p> <blockquote class="citation"> <p> , boost::mpl::equal_to&lt; </p> </blockquote> <blockquote> <p> boost::fusion::result_of::size&lt; </p> <blockquote> <p> boost::phoenix::actor&lt; </p> <blockquote> <p> boost::proto::exprns_::basic_expr&lt; </p> <blockquote> <p> boost::proto::tagns_::tag::terminal </p> </blockquote> <p> , boost::proto::argsns_::term&lt; </p> <blockquote> <blockquote> <p> boost::phoenix::argument&lt;1&gt; </p> <blockquote class="citation"> <p> , 0l , boost::fusion::result_of::size&lt;foo&gt; , mpl_::bool_&lt;true&gt;, mpl_::bool_&lt;true&gt;, mpl_::bool_&lt;true&gt; ' </p> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> <p> boost/boost/fusion/sequence/comparison/enable_comparison.hpp:26:12: </p> <blockquote> <p> required from 'boost::fusion::traits::enable_comparison&lt; </p> <blockquote> <p> boost::phoenix::actor&lt; </p> <blockquote> <p> boost::proto::exprns_::basic_expr&lt; </p> <blockquote> <p> boost::proto::tagns_::tag::terminal </p> </blockquote> <p> , boost::proto::argsns_::term&lt;boost::phoenix::argument&lt;1&gt; &gt;, 0l </p> <blockquote class="citation"> <p> , foo, void ' </p> </blockquote> </blockquote> </blockquote> </blockquote> <p> boost/boost/utility/enable_if.hpp:36:10: required from 'boost </p> <blockquote> <p> ::enable_if&lt; </p> <blockquote> <p> boost::fusion::traits::enable_comparison&lt; </p> <blockquote> <p> boost::phoenix::actor&lt; </p> <blockquote> <p> boost::proto::exprns_::basic_expr&lt; </p> <blockquote> <p> boost::proto::tagns_::tag::terminal </p> </blockquote> <p> , boost::proto::argsns_::term&lt;boost::phoenix::argument&lt;1&gt; &gt; , 0l </p> <blockquote class="citation"> <p> , foo, void , bool ' </p> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> <p> boost/boost/fusion/sequence/comparison/less.hpp:35:9: required by </p> <blockquote> <p> substitution of 'template&lt; </p> <blockquote> <p> class boost::phoenix::actor&lt; </p> <blockquote> <p> boost::proto::exprns_::basic_expr&lt; </p> <blockquote> <p> boost::proto::tagns_::tag::terminal </p> </blockquote> <p> , boost::proto::argsns_::term&lt;boost::phoenix::argument&lt;1&gt; &gt;, 0l </p> <blockquote class="citation"> <p> ; Seq2 = foo, class Seq2 </p> <blockquote> <p> boost::enable_if&lt; </p> </blockquote> </blockquote> </blockquote> <p> boost::fusion::traits::enable_comparison&lt; </p> <blockquote> <p> boost::phoenix::actor&lt; </p> <blockquote> <p> boost::proto::exprns_::basic_expr&lt; </p> <blockquote> <p> boost::proto::tagns_::tag::terminal </p> </blockquote> <p> , boost::proto::argsns_::term&lt;boost::phoenix::argument&lt;1&gt; &gt; , 0l </p> <blockquote class="citation"> <p> ; Seq2 = foo, Seq2 , bool ::type boost::fusion::operators::operator&lt;( </p> </blockquote> </blockquote> </blockquote> <p> const boost::phoenix::actor&lt; </p> <blockquote> <p> boost::proto::exprns_::basic_expr&lt; </p> <blockquote> <p> boost::proto::tagns_::tag::terminal </p> </blockquote> <p> , boost::proto::argsns_::term&lt;boost::phoenix::argument&lt;1&gt; &gt;, 0l </p> <blockquote class="citation"> <p> ; Seq2 = foo &amp;, const Seq2 &amp; </p> </blockquote> </blockquote> </blockquote> <p> )' </p> </blockquote> <p> test.cpp:19:52: required from here boost/boost/fusion/sequence/intrinsic/size.hpp:33:20: error: no type </p> <blockquote> <p> named 'size' in 'boost::phoenix::actor&lt; </p> <blockquote> <p> boost::proto::exprns_::basic_expr&lt; </p> <blockquote> <p> boost::proto::tagns_::tag::terminal </p> </blockquote> <p> , boost::proto::argsns_::term&lt;boost::phoenix::argument&lt;1&gt; &gt;, 0l </p> <blockquote class="citation"> <p> ' </p> </blockquote> </blockquote> </blockquote> <p> boost/boost/fusion/sequence/intrinsic/size.hpp: In instantiation of </p> <blockquote> <p> 'boost::fusion::result_of::size&lt; </p> <blockquote> <p> boost::phoenix::actor&lt; </p> <blockquote> <p> boost::proto::exprns_::basic_expr&lt; </p> <blockquote> <p> boost::proto::tagns_::tag::terminal </p> </blockquote> <p> , boost::proto::argsns_::term&lt;boost::phoenix::argument&lt;1&gt; &gt;, 0l </p> <blockquote class="citation"> <p> ': </p> </blockquote> </blockquote> </blockquote> </blockquote> <p> boost/boost/mpl/aux_/preprocessed/gcc/equal_to.hpp:60:29: required </p> <blockquote> <p> from 'boost::mpl::equal_to_tag&lt; </p> <blockquote> <p> boost::fusion::result_of::size&lt; </p> <blockquote> <p> boost::phoenix::actor&lt; </p> <blockquote> <p> boost::proto::exprns_::basic_expr&lt; </p> <blockquote> <p> boost::proto::tagns_::tag::terminal </p> </blockquote> <p> , boost::proto::argsns_::term&lt;boost::phoenix::argument&lt;1&gt; &gt; , 0l </p> <blockquote class="citation"> <p> ' </p> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> <p> boost/boost/mpl/aux_/preprocessed/gcc/equal_to.hpp:67:8: required </p> <blockquote> <p> from 'boost::mpl::equal_to&lt; </p> <blockquote> <p> boost::fusion::result_of::size&lt; </p> <blockquote> <p> boost::phoenix::actor&lt; </p> <blockquote> <p> boost::proto::exprns_::basic_expr&lt; </p> <blockquote> <p> boost::proto::tagns_::tag::terminal </p> </blockquote> <p> , boost::proto::argsns_::term&lt;boost::phoenix::argument&lt;1&gt; &gt; , 0l </p> <blockquote class="citation"> <p> , boost::fusion::result_of::size&lt;foo&gt; ' </p> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> <p> boost/boost/mpl/aux_/nested_type_wknd.hpp:26:31: required from </p> <blockquote> <p> 'boost::mpl::aux::nested_type_wknd&lt; </p> <blockquote> <p> boost::mpl::equal_to&lt; </p> <blockquote> <p> boost::fusion::result_of::size&lt; </p> <blockquote> <p> boost::phoenix::actor&lt; </p> <blockquote> <p> boost::proto::exprns_::basic_expr&lt; </p> <blockquote> <p> boost::proto::tagns_::tag::terminal </p> </blockquote> <p> , boost::proto::argsns_::term&lt; </p> <blockquote> <blockquote> <p> boost::phoenix::argument&lt;1&gt; </p> <blockquote class="citation"> <p> , 0l , boost::fusion::result_of::size&lt;foo&gt; ' </p> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> <p> boost/boost/mpl/aux_/preprocessed/gcc/and.hpp:23:8: required from </p> <blockquote> <p> 'boost::mpl::aux::and_impl&lt; </p> <blockquote> <p> true </p> </blockquote> <p> , boost::mpl::equal_to&lt; </p> <blockquote> <blockquote> <p> boost::fusion::result_of::size&lt; </p> <blockquote> <p> boost::phoenix::actor&lt; </p> <blockquote> <p> boost::proto::exprns_::basic_expr&lt; </p> <blockquote> <p> boost::proto::tagns_::tag::terminal </p> </blockquote> <p> , boost::proto::argsns_::term&lt; </p> <blockquote> <blockquote> <p> boost::phoenix::argument&lt;1&gt; </p> <blockquote class="citation"> <p> , 0l , boost::fusion::result_of::size&lt;foo&gt; , mpl_::bool_&lt;true&gt;, mpl_::bool_&lt;true&gt;, mpl_::bool_&lt;true&gt; ' </p> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> <p> boost/boost/mpl/aux_/preprocessed/gcc/and.hpp:48:8: required from </p> <blockquote> <p> 'boost::mpl::and_&lt; </p> <blockquote> <p> boost::mpl::or_&lt; </p> <blockquote> <p> boost::fusion::traits::is_sequence&lt; </p> <blockquote> <p> boost::phoenix::actor&lt; </p> <blockquote> <p> boost::proto::exprns_::basic_expr&lt; </p> <blockquote> <p> boost::proto::tagns_::tag::terminal </p> </blockquote> <p> , boost::proto::argsns_::term&lt; </p> <blockquote> <blockquote> <p> boost::phoenix::argument&lt;1&gt; </p> <blockquote class="citation"> <p> , 0l , boost::fusion::traits::is_sequence&lt;foo&gt;, mpl_::bool_&lt;false&gt; </p> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> <p> , mpl_::bool_&lt;false&gt;, mpl_::bool_&lt;false&gt; </p> <blockquote class="citation"> <p> , boost::mpl::equal_to&lt; </p> </blockquote> <blockquote> <p> boost::fusion::result_of::size&lt; </p> <blockquote> <p> boost::phoenix::actor&lt; </p> <blockquote> <p> boost::proto::exprns_::basic_expr&lt; </p> <blockquote> <p> boost::proto::tagns_::tag::terminal </p> </blockquote> <p> , boost::proto::argsns_::term&lt; </p> <blockquote> <blockquote> <p> boost::phoenix::argument&lt;1&gt; </p> <blockquote class="citation"> <p> , 0l , boost::fusion::result_of::size&lt;foo&gt; , mpl_::bool_&lt;true&gt;, mpl_::bool_&lt;true&gt;, mpl_::bool_&lt;true&gt; ' </p> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> <p> boost/boost/fusion/sequence/comparison/enable_comparison.hpp:26:12: </p> <blockquote> <p> required from 'boost::fusion::traits::enable_comparison&lt; </p> <blockquote> <p> boost::phoenix::actor&lt; </p> <blockquote> <p> boost::proto::exprns_::basic_expr&lt; </p> <blockquote> <p> boost::proto::tagns_::tag::terminal </p> </blockquote> <p> , boost::proto::argsns_::term&lt;boost::phoenix::argument&lt;1&gt; &gt;, 0l </p> <blockquote class="citation"> <p> , foo, void ' </p> </blockquote> </blockquote> </blockquote> </blockquote> <p> boost/boost/utility/enable_if.hpp:36:10: required from 'boost </p> <blockquote> <p> ::enable_if&lt; </p> <blockquote> <p> boost::fusion::traits::enable_comparison&lt; </p> <blockquote> <p> boost::phoenix::actor&lt; </p> <blockquote> <p> boost::proto::exprns_::basic_expr&lt; </p> <blockquote> <p> boost::proto::tagns_::tag::terminal </p> </blockquote> <p> , boost::proto::argsns_::term&lt;boost::phoenix::argument&lt;1&gt; &gt; , 0l </p> <blockquote class="citation"> <p> , foo, void , bool ' </p> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> <p> boost/boost/fusion/sequence/comparison/less.hpp:35:9: required by </p> <blockquote> <p> substitution of 'template&lt; </p> <blockquote> <p> class boost::phoenix::actor&lt; </p> <blockquote> <p> boost::proto::exprns_::basic_expr&lt; </p> <blockquote> <p> boost::proto::tagns_::tag::terminal </p> </blockquote> <p> , boost::proto::argsns_::term&lt;boost::phoenix::argument&lt;1&gt; &gt;, 0l </p> <blockquote class="citation"> <p> ; Seq2 = foo, class Seq2 </p> <blockquote> <p> boost::enable_if&lt; </p> </blockquote> </blockquote> </blockquote> <p> boost::fusion::traits::enable_comparison&lt; </p> <blockquote> <p> boost::phoenix::actor&lt; </p> <blockquote> <p> boost::proto::exprns_::basic_expr&lt; </p> <blockquote> <p> boost::proto::tagns_::tag::terminal </p> </blockquote> <p> , boost::proto::argsns_::term&lt;boost::phoenix::argument&lt;1&gt; &gt; , 0l </p> <blockquote class="citation"> <p> ; Seq2 = foo, Seq2 , bool ::type boost::fusion::operators::operator&lt;( </p> </blockquote> </blockquote> </blockquote> <p> const boost::phoenix::actor&lt; </p> <blockquote> <p> boost::proto::exprns_::basic_expr&lt; </p> <blockquote> <p> boost::proto::tagns_::tag::terminal </p> </blockquote> <p> , boost::proto::argsns_::term&lt;boost::phoenix::argument&lt;1&gt; &gt;, 0l </p> <blockquote class="citation"> <p> ; Seq2 = foo &amp;, const Seq2 &amp; </p> </blockquote> </blockquote> </blockquote> <p> )' </p> </blockquote> <p> test.cpp:19:52: required from here boost/boost/fusion/sequence/intrinsic/size.hpp:74:44: error: no type </p> <blockquote> <p> named 'type' in 'boost::fusion::extension::size_impl&lt; </p> <blockquote> <p> boost::proto::tagns_::tag::proto_expr </p> <blockquote class="citation"> <p> ::apply&lt; </p> </blockquote> <p> boost::phoenix::actor&lt; </p> <blockquote> <p> boost::proto::exprns_::basic_expr&lt; </p> <blockquote> <p> boost::proto::tagns_::tag::terminal </p> </blockquote> <p> , boost::proto::argsns_::term&lt;boost::phoenix::argument&lt;1&gt; &gt;, 0l </p> <blockquote class="citation"> <p> ' </p> </blockquote> </blockquote> </blockquote> </blockquote> <p> In file included from boost/boost/mpl/aux_/include_preprocessed.hpp </p> <blockquote> <p> :37:0, </p> </blockquote> <p> from boost/boost/mpl/aux_/comparison_op.hpp:35, from boost/boost/mpl/equal_to.hpp:19, from boost/boost/fusion/container/list/detail/equal_to_impl.hpp:11, from boost/boost/fusion/container/list/cons_iterator.hpp:16, from boost/boost/fusion/container/list/cons.hpp:17, from boost/boost/fusion/iterator/segmented_iterator.hpp:13, from boost/boost/fusion/sequence/intrinsic/detail/segmented_begin.hpp </p> <blockquote> <p> :11, </p> </blockquote> <p> from boost/boost/fusion/sequence/intrinsic/begin.hpp:17, from boost/boost/fusion/sequence/comparison/equal_to.hpp:11, from boost/boost/fusion/sequence/comparison.hpp:10, from test.cpp:1: boost/boost/mpl/aux_/preprocessed/gcc/equal_to.hpp: In instantiation </p> <blockquote> <p> of 'boost::mpl::equal_to_tag&lt; </p> <blockquote> <p> boost::fusion::result_of::size&lt; </p> <blockquote> <p> boost::phoenix::actor&lt; </p> <blockquote> <p> boost::proto::exprns_::basic_expr&lt; </p> <blockquote> <p> boost::proto::tagns_::tag::terminal </p> </blockquote> <p> , boost::proto::argsns_::term&lt;boost::phoenix::argument&lt;1&gt; &gt; , 0l </p> <blockquote class="citation"> <p> ': </p> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> <p> boost/boost/mpl/aux_/preprocessed/gcc/equal_to.hpp:67:8: required </p> <blockquote> <p> from 'boost::mpl::equal_to&lt; </p> <blockquote> <p> boost::fusion::result_of::size&lt; </p> <blockquote> <p> boost::phoenix::actor&lt; </p> <blockquote> <p> boost::proto::exprns_::basic_expr&lt; </p> <blockquote> <p> boost::proto::tagns_::tag::terminal </p> </blockquote> <p> , boost::proto::argsns_::term&lt;boost::phoenix::argument&lt;1&gt; &gt; , 0l </p> <blockquote class="citation"> <p> , boost::fusion::result_of::size&lt;foo&gt; ' </p> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> <p> boost/boost/mpl/aux_/nested_type_wknd.hpp:26:31: required from </p> <blockquote> <p> 'boost::mpl::aux::nested_type_wknd&lt; </p> <blockquote> <p> boost::mpl::equal_to&lt; </p> <blockquote> <p> boost::fusion::result_of::size&lt; </p> <blockquote> <p> boost::phoenix::actor&lt; </p> <blockquote> <p> boost::proto::exprns_::basic_expr&lt; </p> <blockquote> <p> boost::proto::tagns_::tag::terminal </p> </blockquote> <p> , boost::proto::argsns_::term&lt; </p> <blockquote> <blockquote> <p> boost::phoenix::argument&lt;1&gt; </p> <blockquote class="citation"> <p> , 0l , boost::fusion::result_of::size&lt;foo&gt; ' </p> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> <p> boost/boost/mpl/aux_/preprocessed/gcc/and.hpp:23:8: required from </p> <blockquote> <p> 'boost::mpl::aux::and_impl&lt; </p> <blockquote> <p> true </p> </blockquote> <p> , boost::mpl::equal_to&lt; </p> <blockquote> <blockquote> <p> boost::fusion::result_of::size&lt; </p> <blockquote> <p> boost::phoenix::actor&lt; </p> <blockquote> <p> boost::proto::exprns_::basic_expr&lt; </p> <blockquote> <p> boost::proto::tagns_::tag::terminal </p> </blockquote> <p> , boost::proto::argsns_::term&lt; </p> <blockquote> <blockquote> <p> boost::phoenix::argument&lt;1&gt; </p> <blockquote class="citation"> <p> , 0l , boost::fusion::result_of::size&lt;foo&gt; , mpl_::bool_&lt;true&gt;, mpl_::bool_&lt;true&gt;, mpl_::bool_&lt;true&gt; ' </p> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> <p> boost/boost/mpl/aux_/preprocessed/gcc/and.hpp:48:8: required from </p> <blockquote> <p> 'boost::mpl::and_&lt; </p> <blockquote> <p> boost::mpl::or_&lt; </p> <blockquote> <p> boost::fusion::traits::is_sequence&lt; </p> <blockquote> <p> boost::phoenix::actor&lt; </p> <blockquote> <p> boost::proto::exprns_::basic_expr&lt; </p> <blockquote> <p> boost::proto::tagns_::tag::terminal </p> </blockquote> <p> , boost::proto::argsns_::term&lt; </p> <blockquote> <blockquote> <p> boost::phoenix::argument&lt;1&gt; </p> <blockquote class="citation"> <p> , 0l , boost::fusion::traits::is_sequence&lt;foo&gt;, mpl_::bool_&lt;false&gt; </p> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> <p> , mpl_::bool_&lt;false&gt;, mpl_::bool_&lt;false&gt; </p> <blockquote class="citation"> <p> , boost::mpl::equal_to&lt; </p> </blockquote> <blockquote> <p> boost::fusion::result_of::size&lt; </p> <blockquote> <p> boost::phoenix::actor&lt; </p> <blockquote> <p> boost::proto::exprns_::basic_expr&lt; </p> <blockquote> <p> boost::proto::tagns_::tag::terminal </p> </blockquote> <p> , boost::proto::argsns_::term&lt; </p> <blockquote> <blockquote> <p> boost::phoenix::argument&lt;1&gt; </p> <blockquote class="citation"> <p> , 0l , boost::fusion::result_of::size&lt;foo&gt; , mpl_::bool_&lt;true&gt;, mpl_::bool_&lt;true&gt;, mpl_::bool_&lt;true&gt; ' </p> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> <p> boost/boost/fusion/sequence/comparison/enable_comparison.hpp:26:12: </p> <blockquote> <p> required from 'boost::fusion::traits::enable_comparison&lt; </p> <blockquote> <p> boost::phoenix::actor&lt; </p> <blockquote> <p> boost::proto::exprns_::basic_expr&lt; </p> <blockquote> <p> boost::proto::tagns_::tag::terminal </p> </blockquote> <p> , boost::proto::argsns_::term&lt;boost::phoenix::argument&lt;1&gt; &gt;, 0l </p> <blockquote class="citation"> <p> , foo, void ' </p> </blockquote> </blockquote> </blockquote> </blockquote> <p> boost/boost/utility/enable_if.hpp:36:10: required from 'boost </p> <blockquote> <p> ::enable_if&lt; </p> <blockquote> <p> boost::fusion::traits::enable_comparison&lt; </p> <blockquote> <p> boost::phoenix::actor&lt; </p> <blockquote> <p> boost::proto::exprns_::basic_expr&lt; </p> <blockquote> <p> boost::proto::tagns_::tag::terminal </p> </blockquote> <p> , boost::proto::argsns_::term&lt;boost::phoenix::argument&lt;1&gt; &gt; , 0l </p> <blockquote class="citation"> <p> , foo, void , bool ' </p> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> <p> boost/boost/fusion/sequence/comparison/less.hpp:35:9: required by </p> <blockquote> <p> substitution of 'template&lt; </p> <blockquote> <p> class boost::phoenix::actor&lt; </p> <blockquote> <p> boost::proto::exprns_::basic_expr&lt; </p> <blockquote> <p> boost::proto::tagns_::tag::terminal </p> </blockquote> <p> , boost::proto::argsns_::term&lt;boost::phoenix::argument&lt;1&gt; &gt;, 0l </p> <blockquote class="citation"> <p> ; Seq2 = foo, class Seq2 </p> <blockquote> <p> boost::enable_if&lt; </p> </blockquote> </blockquote> </blockquote> <p> boost::fusion::traits::enable_comparison&lt; </p> <blockquote> <p> boost::phoenix::actor&lt; </p> <blockquote> <p> boost::proto::exprns_::basic_expr&lt; </p> <blockquote> <p> boost::proto::tagns_::tag::terminal </p> </blockquote> <p> , boost::proto::argsns_::term&lt;boost::phoenix::argument&lt;1&gt; &gt; , 0l </p> <blockquote class="citation"> <p> ; Seq2 = foo, Seq2 , bool ::type boost::fusion::operators::operator&lt;( </p> </blockquote> </blockquote> </blockquote> <p> const boost::phoenix::actor&lt; </p> <blockquote> <p> boost::proto::exprns_::basic_expr&lt; </p> <blockquote> <p> boost::proto::tagns_::tag::terminal </p> </blockquote> <p> , boost::proto::argsns_::term&lt;boost::phoenix::argument&lt;1&gt; &gt;, 0l </p> <blockquote class="citation"> <p> ; Seq2 = foo &amp;, const Seq2 &amp; </p> </blockquote> </blockquote> </blockquote> <p> )' </p> </blockquote> <p> test.cpp:19:52: required from here boost/boost/mpl/aux_/preprocessed/gcc/equal_to.hpp:60:29: error: no </p> <blockquote> <p> type named 'tag' in 'boost::fusion::result_of::size&lt; </p> <blockquote> <p> boost::phoenix::actor&lt; </p> <blockquote> <p> boost::proto::exprns_::basic_expr&lt; </p> <blockquote> <p> boost::proto::tagns_::tag::terminal </p> </blockquote> <p> , boost::proto::argsns_::term&lt;boost::phoenix::argument&lt;1&gt; &gt;, 0l </p> <blockquote class="citation"> <p> ' </p> </blockquote> </blockquote> </blockquote> </blockquote> <p> In file included from boost/boost/mpl/not.hpp:19:0, from boost/boost/mpl/is_sequence.hpp:17, from boost/boost/fusion/support/detail/is_mpl_sequence.hpp:12, from boost/boost/fusion/support/tag_of.hpp:13, from boost/boost/fusion/support/is_sequence.hpp:11, from boost/boost/fusion/sequence/intrinsic_fwd.hpp:12, from boost/boost/fusion/sequence/intrinsic/begin.hpp:13, from boost/boost/fusion/sequence/comparison/equal_to.hpp:11, from boost/boost/fusion/sequence/comparison.hpp:10, from test.cpp:1: boost/boost/mpl/aux_/nested_type_wknd.hpp: In instantiation of 'boost </p> <blockquote> <p> ::mpl::aux::nested_type_wknd&lt; </p> <blockquote> <p> boost::mpl::equal_to&lt; </p> <blockquote> <p> boost::fusion::result_of::size&lt; </p> <blockquote> <p> boost::phoenix::actor&lt; </p> <blockquote> <p> boost::proto::exprns_::basic_expr&lt; </p> <blockquote> <p> boost::proto::tagns_::tag::terminal </p> </blockquote> <p> , boost::proto::argsns_::term&lt; </p> <blockquote> <blockquote> <p> boost::phoenix::argument&lt;1&gt; </p> <blockquote class="citation"> <p> , 0l , boost::fusion::result_of::size&lt;foo&gt; ': </p> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> <p> boost/boost/mpl/aux_/preprocessed/gcc/and.hpp:23:8: required from </p> <blockquote> <p> 'boost::mpl::aux::and_impl&lt; </p> <blockquote> <p> true </p> </blockquote> <p> , boost::mpl::equal_to&lt; </p> <blockquote> <blockquote> <p> boost::fusion::result_of::size&lt; </p> <blockquote> <p> boost::phoenix::actor&lt; </p> <blockquote> <p> boost::proto::exprns_::basic_expr&lt; </p> <blockquote> <p> boost::proto::tagns_::tag::terminal </p> </blockquote> <p> , boost::proto::argsns_::term&lt; </p> <blockquote> <blockquote> <p> boost::phoenix::argument&lt;1&gt; </p> <blockquote class="citation"> <p> , 0l , boost::fusion::result_of::size&lt;foo&gt; , mpl_::bool_&lt;true&gt;, mpl_::bool_&lt;true&gt;, mpl_::bool_&lt;true&gt; ' </p> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> <p> boost/boost/mpl/aux_/preprocessed/gcc/and.hpp:48:8: required from </p> <blockquote> <p> 'boost::mpl::and_&lt; </p> <blockquote> <p> boost::mpl::or_&lt; </p> <blockquote> <p> boost::fusion::traits::is_sequence&lt; </p> <blockquote> <p> boost::phoenix::actor&lt; </p> <blockquote> <p> boost::proto::exprns_::basic_expr&lt; </p> <blockquote> <p> boost::proto::tagns_::tag::terminal </p> </blockquote> <p> , boost::proto::argsns_::term&lt; </p> <blockquote> <blockquote> <p> boost::phoenix::argument&lt;1&gt; </p> <blockquote class="citation"> <p> , 0l , boost::fusion::traits::is_sequence&lt;foo&gt;, mpl_::bool_&lt;false&gt; </p> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> <p> , mpl_::bool_&lt;false&gt;, mpl_::bool_&lt;false&gt; </p> <blockquote class="citation"> <p> , boost::mpl::equal_to&lt; </p> </blockquote> <blockquote> <p> boost::fusion::result_of::size&lt; </p> <blockquote> <p> boost::phoenix::actor&lt; </p> <blockquote> <p> boost::proto::exprns_::basic_expr&lt; </p> <blockquote> <p> boost::proto::tagns_::tag::terminal </p> </blockquote> <p> , boost::proto::argsns_::term&lt; </p> <blockquote> <blockquote> <p> boost::phoenix::argument&lt;1&gt; </p> <blockquote class="citation"> <p> , 0l , boost::fusion::result_of::size&lt;foo&gt; , mpl_::bool_&lt;true&gt;, mpl_::bool_&lt;true&gt;, mpl_::bool_&lt;true&gt; ' </p> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> <p> boost/boost/fusion/sequence/comparison/enable_comparison.hpp:26:12: </p> <blockquote> <p> required from 'boost::fusion::traits::enable_comparison&lt; </p> <blockquote> <p> boost::phoenix::actor&lt; </p> <blockquote> <p> boost::proto::exprns_::basic_expr&lt; </p> <blockquote> <p> boost::proto::tagns_::tag::terminal </p> </blockquote> <p> , boost::proto::argsns_::term&lt;boost::phoenix::argument&lt;1&gt; &gt;, 0l </p> <blockquote class="citation"> <p> , foo, void ' </p> </blockquote> </blockquote> </blockquote> </blockquote> <p> boost/boost/utility/enable_if.hpp:36:10: required from 'boost </p> <blockquote> <p> ::enable_if&lt; </p> <blockquote> <p> boost::fusion::traits::enable_comparison&lt; </p> <blockquote> <p> boost::phoenix::actor&lt; </p> <blockquote> <p> boost::proto::exprns_::basic_expr&lt; </p> <blockquote> <p> boost::proto::tagns_::tag::terminal </p> </blockquote> <p> , boost::proto::argsns_::term&lt;boost::phoenix::argument&lt;1&gt; &gt; , 0l </p> <blockquote class="citation"> <p> , foo, void , bool ' </p> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> <p> boost/boost/fusion/sequence/comparison/less.hpp:35:9: required by </p> <blockquote> <p> substitution of 'template&lt; </p> <blockquote> <p> class boost::phoenix::actor&lt; </p> <blockquote> <p> boost::proto::exprns_::basic_expr&lt; </p> <blockquote> <p> boost::proto::tagns_::tag::terminal </p> </blockquote> <p> , boost::proto::argsns_::term&lt;boost::phoenix::argument&lt;1&gt; &gt;, 0l </p> <blockquote class="citation"> <p> ; Seq2 = foo, class Seq2 </p> <blockquote> <p> boost::enable_if&lt; </p> </blockquote> </blockquote> </blockquote> <p> boost::fusion::traits::enable_comparison&lt; </p> <blockquote> <p> boost::phoenix::actor&lt; </p> <blockquote> <p> boost::proto::exprns_::basic_expr&lt; </p> <blockquote> <p> boost::proto::tagns_::tag::terminal </p> </blockquote> <p> , boost::proto::argsns_::term&lt;boost::phoenix::argument&lt;1&gt; &gt; , 0l </p> <blockquote class="citation"> <p> ; Seq2 = foo, Seq2 , bool ::type boost::fusion::operators::operator&lt;( </p> </blockquote> </blockquote> </blockquote> <p> const boost::phoenix::actor&lt; </p> <blockquote> <p> boost::proto::exprns_::basic_expr&lt; </p> <blockquote> <p> boost::proto::tagns_::tag::terminal </p> </blockquote> <p> , boost::proto::argsns_::term&lt;boost::phoenix::argument&lt;1&gt; &gt;, 0l </p> <blockquote class="citation"> <p> ; Seq2 = foo &amp;, const Seq2 &amp; </p> </blockquote> </blockquote> </blockquote> <p> )' </p> </blockquote> <p> test.cpp:19:52: required from here boost/boost/mpl/aux_/nested_type_wknd.hpp:26:31: error: no type named </p> <blockquote> <p> 'type' in 'boost::mpl::equal_to&lt; </p> <blockquote> <p> boost::fusion::result_of::size&lt; </p> <blockquote> <p> boost::phoenix::actor&lt; </p> <blockquote> <p> boost::proto::exprns_::basic_expr&lt; </p> <blockquote> <p> boost::proto::tagns_::tag::terminal </p> </blockquote> <p> , boost::proto::argsns_::term&lt;boost::phoenix::argument&lt;1&gt; &gt; , 0l </p> <blockquote class="citation"> <p> , boost::fusion::result_of::size&lt;foo&gt; ' </p> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> <p> In file included from boost/boost/mpl/aux_/include_preprocessed.hpp </p> <blockquote> <p> :37:0, </p> </blockquote> <p> from boost/boost/mpl/and.hpp:42, from boost/boost/mpl/is_sequence.hpp:18, from boost/boost/fusion/support/detail/is_mpl_sequence.hpp:12, from boost/boost/fusion/support/tag_of.hpp:13, from boost/boost/fusion/support/is_sequence.hpp:11, from boost/boost/fusion/sequence/intrinsic_fwd.hpp:12, from boost/boost/fusion/sequence/intrinsic/begin.hpp:13, from boost/boost/fusion/sequence/comparison/equal_to.hpp:11, from boost/boost/fusion/sequence/comparison.hpp:10, from test.cpp:1: boost/boost/mpl/aux_/preprocessed/gcc/and.hpp: In instantiation of </p> <blockquote> <p> 'boost::mpl::aux::and_impl&lt; </p> <blockquote> <p> true </p> </blockquote> <p> , boost::mpl::equal_to&lt; </p> <blockquote> <blockquote> <p> boost::fusion::result_of::size&lt; </p> <blockquote> <p> boost::phoenix::actor&lt; </p> <blockquote> <p> boost::proto::exprns_::basic_expr&lt; </p> <blockquote> <p> boost::proto::tagns_::tag::terminal </p> </blockquote> <p> , boost::proto::argsns_::term&lt; </p> <blockquote> <blockquote> <p> boost::phoenix::argument&lt;1&gt; </p> <blockquote class="citation"> <p> , 0l , boost::fusion::result_of::size&lt;foo&gt; , mpl_::bool_&lt;true&gt;, mpl_::bool_&lt;true&gt;, mpl_::bool_&lt;true&gt; ': </p> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> <p> boost/boost/mpl/aux_/preprocessed/gcc/and.hpp:48:8: required from </p> <blockquote> <p> 'boost::mpl::and_&lt; </p> <blockquote> <p> boost::mpl::or_&lt; </p> <blockquote> <p> boost::fusion::traits::is_sequence&lt; </p> <blockquote> <p> boost::phoenix::actor&lt; </p> <blockquote> <p> boost::proto::exprns_::basic_expr&lt; </p> <blockquote> <p> boost::proto::tagns_::tag::terminal </p> </blockquote> <p> , boost::proto::argsns_::term&lt; </p> <blockquote> <blockquote> <p> boost::phoenix::argument&lt;1&gt; </p> <blockquote class="citation"> <p> , 0l , boost::fusion::traits::is_sequence&lt;foo&gt;, mpl_::bool_&lt;false&gt; </p> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> <p> , mpl_::bool_&lt;false&gt;, mpl_::bool_&lt;false&gt; </p> <blockquote class="citation"> <p> , boost::mpl::equal_to&lt; </p> </blockquote> <blockquote> <p> boost::fusion::result_of::size&lt; </p> <blockquote> <p> boost::phoenix::actor&lt; </p> <blockquote> <p> boost::proto::exprns_::basic_expr&lt; </p> <blockquote> <p> boost::proto::tagns_::tag::terminal </p> </blockquote> <p> , boost::proto::argsns_::term&lt; </p> <blockquote> <blockquote> <p> boost::phoenix::argument&lt;1&gt; </p> <blockquote class="citation"> <p> , 0l , boost::fusion::result_of::size&lt;foo&gt; , mpl_::bool_&lt;true&gt;, mpl_::bool_&lt;true&gt;, mpl_::bool_&lt;true&gt; ' </p> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> <p> boost/boost/fusion/sequence/comparison/enable_comparison.hpp:26:12: </p> <blockquote> <p> required from 'boost::fusion::traits::enable_comparison&lt; </p> <blockquote> <p> boost::phoenix::actor&lt; </p> <blockquote> <p> boost::proto::exprns_::basic_expr&lt; </p> <blockquote> <p> boost::proto::tagns_::tag::terminal </p> </blockquote> <p> , boost::proto::argsns_::term&lt;boost::phoenix::argument&lt;1&gt; &gt;, 0l </p> <blockquote class="citation"> <p> , foo, void ' </p> </blockquote> </blockquote> </blockquote> </blockquote> <p> boost/boost/utility/enable_if.hpp:36:10: required from 'boost </p> <blockquote> <p> ::enable_if&lt; </p> <blockquote> <p> boost::fusion::traits::enable_comparison&lt; </p> <blockquote> <p> boost::phoenix::actor&lt; </p> <blockquote> <p> boost::proto::exprns_::basic_expr&lt; </p> <blockquote> <p> boost::proto::tagns_::tag::terminal </p> </blockquote> <p> , boost::proto::argsns_::term&lt;boost::phoenix::argument&lt;1&gt; &gt; , 0l </p> <blockquote class="citation"> <p> , foo, void , bool ' </p> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> <p> boost/boost/fusion/sequence/comparison/less.hpp:35:9: required by </p> <blockquote> <p> substitution of 'template&lt; </p> <blockquote> <p> class boost::phoenix::actor&lt; </p> <blockquote> <p> boost::proto::exprns_::basic_expr&lt; </p> <blockquote> <p> boost::proto::tagns_::tag::terminal </p> </blockquote> <p> , boost::proto::argsns_::term&lt;boost::phoenix::argument&lt;1&gt; &gt;, 0l </p> <blockquote class="citation"> <p> ; Seq2 = foo, class Seq2 </p> <blockquote> <p> boost::enable_if&lt; </p> </blockquote> </blockquote> </blockquote> <p> boost::fusion::traits::enable_comparison&lt; </p> <blockquote> <p> boost::phoenix::actor&lt; </p> <blockquote> <p> boost::proto::exprns_::basic_expr&lt; </p> <blockquote> <p> boost::proto::tagns_::tag::terminal </p> </blockquote> <p> , boost::proto::argsns_::term&lt;boost::phoenix::argument&lt;1&gt; &gt; , 0l </p> <blockquote class="citation"> <p> ; Seq2 = foo, Seq2 , bool ::type boost::fusion::operators::operator&lt;( </p> </blockquote> </blockquote> </blockquote> <p> const boost::phoenix::actor&lt; </p> <blockquote> <p> boost::proto::exprns_::basic_expr&lt; </p> <blockquote> <p> boost::proto::tagns_::tag::terminal </p> </blockquote> <p> , boost::proto::argsns_::term&lt;boost::phoenix::argument&lt;1&gt; &gt;, 0l </p> <blockquote class="citation"> <p> ; Seq2 = foo &amp;, const Seq2 &amp; </p> </blockquote> </blockquote> </blockquote> <p> )' </p> </blockquote> <p> test.cpp:19:52: required from here boost/boost/mpl/aux_/preprocessed/gcc/and.hpp:23:8: error: 'value' is </p> <blockquote> <p> not a member of 'boost::mpl::aux::nested_type_wknd&lt; </p> <blockquote> <p> boost::mpl::equal_to&lt; </p> <blockquote> <p> boost::fusion::result_of::size&lt; </p> <blockquote> <p> boost::phoenix::actor&lt; </p> <blockquote> <p> boost::proto::exprns_::basic_expr&lt; </p> <blockquote> <p> boost::proto::tagns_::tag::terminal </p> </blockquote> <p> , boost::proto::argsns_::term&lt; </p> <blockquote> <blockquote> <p> boost::phoenix::argument&lt;1&gt; </p> <blockquote class="citation"> <p> , 0l , boost::fusion::result_of::size&lt;foo&gt; ' </p> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> <p> In file included from boost/boost/fusion/sequence/intrinsic/begin.hpp </p> <blockquote> <p> :11:0, </p> </blockquote> <p> from boost/boost/fusion/sequence/comparison/equal_to.hpp:11, from boost/boost/fusion/sequence/comparison.hpp:10, from test.cpp:1: boost/boost/utility/enable_if.hpp: In instantiation of 'boost </p> <blockquote> <p> ::enable_if&lt; </p> <blockquote> <p> boost::fusion::traits::enable_comparison&lt; </p> <blockquote> <p> boost::phoenix::actor&lt; </p> <blockquote> <p> boost::proto::exprns_::basic_expr&lt; </p> <blockquote> <p> boost::proto::tagns_::tag::terminal </p> </blockquote> <p> , boost::proto::argsns_::term&lt;boost::phoenix::argument&lt;1&gt; &gt; , 0l </p> <blockquote class="citation"> <p> , foo, void , bool ': </p> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> <p> boost/boost/fusion/sequence/comparison/less.hpp:35:9: required by </p> <blockquote> <p> substitution of 'template&lt; </p> <blockquote> <p> class boost::phoenix::actor&lt; </p> <blockquote> <p> boost::proto::exprns_::basic_expr&lt; </p> <blockquote> <p> boost::proto::tagns_::tag::terminal </p> </blockquote> <p> , boost::proto::argsns_::term&lt;boost::phoenix::argument&lt;1&gt; &gt;, 0l </p> <blockquote class="citation"> <p> ; Seq2 = foo, class Seq2 </p> <blockquote> <p> boost::enable_if&lt; </p> </blockquote> </blockquote> </blockquote> <p> boost::fusion::traits::enable_comparison&lt; </p> <blockquote> <p> boost::phoenix::actor&lt; </p> <blockquote> <p> boost::proto::exprns_::basic_expr&lt; </p> <blockquote> <p> boost::proto::tagns_::tag::terminal </p> </blockquote> <p> , boost::proto::argsns_::term&lt;boost::phoenix::argument&lt;1&gt; &gt; , 0l </p> <blockquote class="citation"> <p> ; Seq2 = foo, Seq2 , bool ::type boost::fusion::operators::operator&lt;( </p> </blockquote> </blockquote> </blockquote> <p> const boost::phoenix::actor&lt; </p> <blockquote> <p> boost::proto::exprns_::basic_expr&lt; </p> <blockquote> <p> boost::proto::tagns_::tag::terminal </p> </blockquote> <p> , boost::proto::argsns_::term&lt;boost::phoenix::argument&lt;1&gt; &gt;, 0l </p> <blockquote class="citation"> <p> ; Seq2 = foo &amp;, const Seq2 &amp; </p> </blockquote> </blockquote> </blockquote> <p> )' </p> </blockquote> <p> test.cpp:19:52: required from here boost/boost/utility/enable_if.hpp:36:10: error: 'value' is not a </p> <blockquote> <p> member of 'boost::fusion::traits::enable_comparison&lt; </p> <blockquote> <p> boost::phoenix::actor&lt; </p> <blockquote> <p> boost::proto::exprns_::basic_expr&lt; </p> <blockquote> <p> boost::proto::tagns_::tag::terminal </p> </blockquote> <p> , boost::proto::argsns_::term&lt;boost::phoenix::argument&lt;1&gt; &gt;, 0l </p> <blockquote class="citation"> <p> , foo, void ' </p> </blockquote> </blockquote> </blockquote> </blockquote> en-us Boost C++ Libraries /htdocs/site/boost.png https://svn.boost.org/trac10/ticket/6268 Trac 1.4.3 Nathan Ridge <zeratul976@…> Wed, 14 Dec 2011 21:48:29 GMT <link>https://svn.boost.org/trac10/ticket/6268#comment:1 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/6268#comment:1</guid> <description> <p> Sorry, that didn't come out well and I don't know how to edit the description :( </p> <p> Here is the code that causes the error, in code tags this time: </p> <pre class="wiki">#include &lt;boost/fusion/sequence/comparison.hpp&gt; #include &lt;boost/fusion/sequence/sequence_facade.hpp&gt; #include &lt;boost/phoenix/core.hpp&gt; #include &lt;boost/phoenix/operator/comparison.hpp&gt; struct foo : boost::fusion::sequence_facade&lt;foo, boost::fusion::random_access_traversal_tag&gt; { // Rest of the sequence_facade extension mechanism code omitted, // as it is not needed to reproduce the error foo() : x(), y() {} int x; int y; }; int main() { auto x = boost::phoenix::arg_names::arg1 &lt; foo(); } </pre> </description> <category>Ticket</category> </item> <item> <author>Nathan Ridge <zeratul976@…></author> <pubDate>Wed, 14 Dec 2011 21:49:05 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/6268#comment:2 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/6268#comment:2</guid> <description> <p> The error can be fixed by adding the following include: </p> <pre class="wiki"> #include &lt;boost/proto/fusion.hpp&gt; </pre> </description> <category>Ticket</category> </item> <item> <author>John Fletcher <J.P.Fletcher@…></author> <pubDate>Thu, 23 Jan 2014 22:04:26 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/6268#comment:3 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/6268#comment:3</guid> <description> <p> Fix and test posted to boost phoenix develop </p> </description> <category>Ticket</category> </item> <item> <dc:creator>Kohei Takahashi</dc:creator> <pubDate>Mon, 09 May 2016 15:13:44 GMT</pubDate> <title>status changed; resolution set https://svn.boost.org/trac10/ticket/6268#comment:4 https://svn.boost.org/trac10/ticket/6268#comment:4 <ul> <li><strong>status</strong> <span class="trac-field-old">new</span> → <span class="trac-field-new">closed</span> </li> <li><strong>resolution</strong> → <span class="trac-field-new">fixed</span> </li> </ul> <p> Compiler picks correct overload now. <a class="ext-link" href="http://melpon.org/wandbox/permlink/1M41RhgXNvI003Sd"><span class="icon">​</span>http://melpon.org/wandbox/permlink/1M41RhgXNvI003Sd</a> </p> Ticket