[Boost-bugs] [Boost C++ Libraries] #6268: Conflict between fusion and phoenix operator<

Subject: [Boost-bugs] [Boost C++ Libraries] #6268: Conflict between fusion and phoenix operator<
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2011-12-14 21:45:51


#6268: Conflict between fusion and phoenix operator<
---------------------------------------------------+------------------------
 Reporter: Nathan Ridge <zeratul976@…> | Owner: theller
     Type: Bugs | Status: new
Milestone: To Be Determined | Component: phoenix
  Version: Boost Development Trunk | Severity: Problem
 Keywords: |
---------------------------------------------------+------------------------
 When using the sequence_facade extension mechanism to adapt my own Fusion
 sequences, I experience a conflict between fusion and phoenix's operator<.

 The problem is that in a lambda expression like "arg1 < s" where "s" is a
 Fusion sequence defined using sequence_facade, Fusion tries to instantiate
 its operator<, 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 <boost/fusion/sequence/comparison.hpp>
 #include <boost/fusion/sequence/sequence_facade.hpp>
 #include <boost/phoenix/core.hpp>
 #include <boost/phoenix/operator/comparison.hpp>

 struct foo : boost::fusion::sequence_facade<foo,
 boost::fusion::random_access_traversal_tag>
 {
     // 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 < foo();
 }


 Here are the errors:

 In file included from
     boost/boost/fusion/view/joint_view/joint_view.hpp:15:0,
 from boost/boost/fusion/algorithm/transformation/push_back.hpp:11,
 from
     boost/boost/fusion/view/iterator_range/detail/segmented_iterator_
     range.hpp:19,a
 from boost/boost/fusion/view/iterator_range/detail/segments_impl.hpp
     :13,
 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
     :12,
 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
 'boost::fusion::extension::size_impl<boost::proto::tagns_::tag::proto_expr>
     ::unsegmented_size<
         boost::phoenix::actor<
             boost::proto::exprns_::basic_expr<
                 boost::proto::tagns_::tag::terminal
               , boost::proto::argsns_::term<boost::phoenix::argument<1> >,
 0l
>
>
>':
 boost/boost/fusion/sequence/intrinsic/size.hpp:36:20: required from
 'boost::fusion::extension::size_impl<boost::proto::tagns_::tag::proto_expr>
     ::apply<
         boost::phoenix::actor<
             boost::proto::exprns_::basic_expr<
                 boost::proto::tagns_::tag::terminal
               , boost::proto::argsns_::term<boost::phoenix::argument<1> >,
 0l
>
>
>'
 boost/boost/fusion/sequence/intrinsic/size.hpp:68:16: required from
     'boost::fusion::result_of::size<
         boost::phoenix::actor<
             boost::proto::exprns_::basic_expr<
                 boost::proto::tagns_::tag::terminal
               , boost::proto::argsns_::term<boost::phoenix::argument<1> >,
 0l
>
>
>'
 boost/boost/mpl/aux_/preprocessed/gcc/equal_to.hpp:60:29: required
     from 'boost::mpl::equal_to_tag<
         boost::fusion::result_of::size<
             boost::phoenix::actor<
                 boost::proto::exprns_::basic_expr<
                     boost::proto::tagns_::tag::terminal
                   ,
 boost::proto::argsns_::term<boost::phoenix::argument<1> >
                   , 0l
>
>
>
>'
 boost/boost/mpl/aux_/preprocessed/gcc/equal_to.hpp:67:8: required
     from 'boost::mpl::equal_to<
         boost::fusion::result_of::size<
             boost::phoenix::actor<
                 boost::proto::exprns_::basic_expr<
                     boost::proto::tagns_::tag::terminal
                   ,
 boost::proto::argsns_::term<boost::phoenix::argument<1> >
                   , 0l
>
>
>, boost::fusion::result_of::size<foo>
>'
 boost/boost/mpl/aux_/nested_type_wknd.hpp:26:31: required from
     'boost::mpl::aux::nested_type_wknd<
         boost::mpl::equal_to<
             boost::fusion::result_of::size<
                 boost::phoenix::actor<
                     boost::proto::exprns_::basic_expr<
                         boost::proto::tagns_::tag::terminal
                       , boost::proto::argsns_::term<
                             boost::phoenix::argument<1>
>, 0l
>
>
>, boost::fusion::result_of::size<foo>
>
>'
 boost/boost/mpl/aux_/preprocessed/gcc/and.hpp:23:8: required from
     'boost::mpl::aux::and_impl<
         true
       , boost::mpl::equal_to<
             boost::fusion::result_of::size<
                 boost::phoenix::actor<
                     boost::proto::exprns_::basic_expr<
                         boost::proto::tagns_::tag::terminal
                       , boost::proto::argsns_::term<
                             boost::phoenix::argument<1>
>, 0l
>
>
>, boost::fusion::result_of::size<foo>
>, mpl_::bool_<true>, mpl_::bool_<true>, mpl_::bool_<true>
>'
 boost/boost/mpl/aux_/preprocessed/gcc/and.hpp:48:8: required from
     'boost::mpl::and_<
         boost::mpl::or_<
             boost::fusion::traits::is_sequence<
                 boost::phoenix::actor<
                     boost::proto::exprns_::basic_expr<
                         boost::proto::tagns_::tag::terminal
                       , boost::proto::argsns_::term<
                             boost::phoenix::argument<1>
>, 0l
>
>
>, boost::fusion::traits::is_sequence<foo>, mpl_::bool_<false>
           , mpl_::bool_<false>, mpl_::bool_<false>
>, boost::mpl::equal_to<
             boost::fusion::result_of::size<
                 boost::phoenix::actor<
                     boost::proto::exprns_::basic_expr<
                         boost::proto::tagns_::tag::terminal
                       , boost::proto::argsns_::term<
                             boost::phoenix::argument<1>
>, 0l
>
>
>, boost::fusion::result_of::size<foo>
>, mpl_::bool_<true>, mpl_::bool_<true>, mpl_::bool_<true>
>'
 boost/boost/fusion/sequence/comparison/enable_comparison.hpp:26:12:
     required from 'boost::fusion::traits::enable_comparison<
         boost::phoenix::actor<
             boost::proto::exprns_::basic_expr<
                 boost::proto::tagns_::tag::terminal
               , boost::proto::argsns_::term<boost::phoenix::argument<1> >,
 0l
>
>, foo, void
>'
 boost/boost/utility/enable_if.hpp:36:10: required from 'boost
     ::enable_if<
         boost::fusion::traits::enable_comparison<
             boost::phoenix::actor<
                 boost::proto::exprns_::basic_expr<
                     boost::proto::tagns_::tag::terminal
                   ,
 boost::proto::argsns_::term<boost::phoenix::argument<1> >
                   , 0l
>
>, foo, void
>, bool
>'
 boost/boost/fusion/sequence/comparison/less.hpp:35:9: required by
     substitution of 'template<
         class boost::phoenix::actor<
             boost::proto::exprns_::basic_expr<
                 boost::proto::tagns_::tag::terminal
               , boost::proto::argsns_::term<boost::phoenix::argument<1> >,
 0l
>
>; Seq2 = foo, class Seq2
> boost::enable_if<
         boost::fusion::traits::enable_comparison<
             boost::phoenix::actor<
                 boost::proto::exprns_::basic_expr<
                     boost::proto::tagns_::tag::terminal
                   ,
 boost::proto::argsns_::term<boost::phoenix::argument<1> >
                   , 0l
>
>; Seq2 = foo, Seq2
>, bool
>::type boost::fusion::operators::operator<(
         const boost::phoenix::actor<
             boost::proto::exprns_::basic_expr<
                 boost::proto::tagns_::tag::terminal
               , boost::proto::argsns_::term<boost::phoenix::argument<1> >,
 0l
>
>; Seq2 = foo &, const Seq2 &
     )'
 test.cpp:19:52: required from here
 boost/boost/fusion/sequence/intrinsic/size.hpp:33:20: error: no type
     named 'size' in 'boost::phoenix::actor<
         boost::proto::exprns_::basic_expr<
             boost::proto::tagns_::tag::terminal
           , boost::proto::argsns_::term<boost::phoenix::argument<1> >, 0l
>
>'
 boost/boost/fusion/sequence/intrinsic/size.hpp: In instantiation of
     'boost::fusion::result_of::size<
         boost::phoenix::actor<
             boost::proto::exprns_::basic_expr<
                 boost::proto::tagns_::tag::terminal
               , boost::proto::argsns_::term<boost::phoenix::argument<1> >,
 0l
>
>
>':
 boost/boost/mpl/aux_/preprocessed/gcc/equal_to.hpp:60:29: required
     from 'boost::mpl::equal_to_tag<
         boost::fusion::result_of::size<
             boost::phoenix::actor<
                 boost::proto::exprns_::basic_expr<
                     boost::proto::tagns_::tag::terminal
                   ,
 boost::proto::argsns_::term<boost::phoenix::argument<1> >
                   , 0l
>
>
>
>'
 boost/boost/mpl/aux_/preprocessed/gcc/equal_to.hpp:67:8: required
     from 'boost::mpl::equal_to<
         boost::fusion::result_of::size<
             boost::phoenix::actor<
                 boost::proto::exprns_::basic_expr<
                     boost::proto::tagns_::tag::terminal
                   ,
 boost::proto::argsns_::term<boost::phoenix::argument<1> >
                   , 0l
>
>
>, boost::fusion::result_of::size<foo>
>'
 boost/boost/mpl/aux_/nested_type_wknd.hpp:26:31: required from
     'boost::mpl::aux::nested_type_wknd<
         boost::mpl::equal_to<
             boost::fusion::result_of::size<
                 boost::phoenix::actor<
                     boost::proto::exprns_::basic_expr<
                         boost::proto::tagns_::tag::terminal
                       , boost::proto::argsns_::term<
                             boost::phoenix::argument<1>
>, 0l
>
>
>, boost::fusion::result_of::size<foo>
>
>'
 boost/boost/mpl/aux_/preprocessed/gcc/and.hpp:23:8: required from
     'boost::mpl::aux::and_impl<
         true
       , boost::mpl::equal_to<
             boost::fusion::result_of::size<
                 boost::phoenix::actor<
                     boost::proto::exprns_::basic_expr<
                         boost::proto::tagns_::tag::terminal
                       , boost::proto::argsns_::term<
                             boost::phoenix::argument<1>
>, 0l
>
>
>, boost::fusion::result_of::size<foo>
>, mpl_::bool_<true>, mpl_::bool_<true>, mpl_::bool_<true>
>'
 boost/boost/mpl/aux_/preprocessed/gcc/and.hpp:48:8: required from
     'boost::mpl::and_<
         boost::mpl::or_<
             boost::fusion::traits::is_sequence<
                 boost::phoenix::actor<
                     boost::proto::exprns_::basic_expr<
                         boost::proto::tagns_::tag::terminal
                       , boost::proto::argsns_::term<
                             boost::phoenix::argument<1>
>, 0l
>
>
>, boost::fusion::traits::is_sequence<foo>, mpl_::bool_<false>
           , mpl_::bool_<false>, mpl_::bool_<false>
>, boost::mpl::equal_to<
             boost::fusion::result_of::size<
                 boost::phoenix::actor<
                     boost::proto::exprns_::basic_expr<
                         boost::proto::tagns_::tag::terminal
                       , boost::proto::argsns_::term<
                             boost::phoenix::argument<1>
>, 0l
>
>
>, boost::fusion::result_of::size<foo>
>, mpl_::bool_<true>, mpl_::bool_<true>, mpl_::bool_<true>
>'
 boost/boost/fusion/sequence/comparison/enable_comparison.hpp:26:12:
     required from 'boost::fusion::traits::enable_comparison<
         boost::phoenix::actor<
             boost::proto::exprns_::basic_expr<
                 boost::proto::tagns_::tag::terminal
               , boost::proto::argsns_::term<boost::phoenix::argument<1> >,
 0l
>
>, foo, void
>'
 boost/boost/utility/enable_if.hpp:36:10: required from 'boost
     ::enable_if<
         boost::fusion::traits::enable_comparison<
             boost::phoenix::actor<
                 boost::proto::exprns_::basic_expr<
                     boost::proto::tagns_::tag::terminal
                   ,
 boost::proto::argsns_::term<boost::phoenix::argument<1> >
                   , 0l
>
>, foo, void
>, bool
>'
 boost/boost/fusion/sequence/comparison/less.hpp:35:9: required by
     substitution of 'template<
         class boost::phoenix::actor<
             boost::proto::exprns_::basic_expr<
                 boost::proto::tagns_::tag::terminal
               , boost::proto::argsns_::term<boost::phoenix::argument<1> >,
 0l
>
>; Seq2 = foo, class Seq2
> boost::enable_if<
         boost::fusion::traits::enable_comparison<
             boost::phoenix::actor<
                 boost::proto::exprns_::basic_expr<
                     boost::proto::tagns_::tag::terminal
                   ,
 boost::proto::argsns_::term<boost::phoenix::argument<1> >
                   , 0l
>
>; Seq2 = foo, Seq2
>, bool
>::type boost::fusion::operators::operator<(
         const boost::phoenix::actor<
             boost::proto::exprns_::basic_expr<
                 boost::proto::tagns_::tag::terminal
               , boost::proto::argsns_::term<boost::phoenix::argument<1> >,
 0l
>
>; Seq2 = foo &, const Seq2 &
     )'
 test.cpp:19:52: required from here
 boost/boost/fusion/sequence/intrinsic/size.hpp:74:44: error: no type
     named 'type' in 'boost::fusion::extension::size_impl<
         boost::proto::tagns_::tag::proto_expr
>::apply<
         boost::phoenix::actor<
             boost::proto::exprns_::basic_expr<
                 boost::proto::tagns_::tag::terminal
               , boost::proto::argsns_::term<boost::phoenix::argument<1> >,
 0l
>
>
>'
 In file included from boost/boost/mpl/aux_/include_preprocessed.hpp
     :37:0,
 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
     :11,
 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
     of 'boost::mpl::equal_to_tag<
         boost::fusion::result_of::size<
             boost::phoenix::actor<
                 boost::proto::exprns_::basic_expr<
                     boost::proto::tagns_::tag::terminal
                   ,
 boost::proto::argsns_::term<boost::phoenix::argument<1> >
                   , 0l
>
>
>
>':
 boost/boost/mpl/aux_/preprocessed/gcc/equal_to.hpp:67:8: required
     from 'boost::mpl::equal_to<
         boost::fusion::result_of::size<
             boost::phoenix::actor<
                 boost::proto::exprns_::basic_expr<
                     boost::proto::tagns_::tag::terminal
                   ,
 boost::proto::argsns_::term<boost::phoenix::argument<1> >
                   , 0l
>
>
>, boost::fusion::result_of::size<foo>
>'
 boost/boost/mpl/aux_/nested_type_wknd.hpp:26:31: required from
     'boost::mpl::aux::nested_type_wknd<
         boost::mpl::equal_to<
             boost::fusion::result_of::size<
                 boost::phoenix::actor<
                     boost::proto::exprns_::basic_expr<
                         boost::proto::tagns_::tag::terminal
                       , boost::proto::argsns_::term<
                             boost::phoenix::argument<1>
>, 0l
>
>
>, boost::fusion::result_of::size<foo>
>
>'
 boost/boost/mpl/aux_/preprocessed/gcc/and.hpp:23:8: required from
     'boost::mpl::aux::and_impl<
         true
       , boost::mpl::equal_to<
             boost::fusion::result_of::size<
                 boost::phoenix::actor<
                     boost::proto::exprns_::basic_expr<
                         boost::proto::tagns_::tag::terminal
                       , boost::proto::argsns_::term<
                             boost::phoenix::argument<1>
>, 0l
>
>
>, boost::fusion::result_of::size<foo>
>, mpl_::bool_<true>, mpl_::bool_<true>, mpl_::bool_<true>
>'
 boost/boost/mpl/aux_/preprocessed/gcc/and.hpp:48:8: required from
     'boost::mpl::and_<
         boost::mpl::or_<
             boost::fusion::traits::is_sequence<
                 boost::phoenix::actor<
                     boost::proto::exprns_::basic_expr<
                         boost::proto::tagns_::tag::terminal
                       , boost::proto::argsns_::term<
                             boost::phoenix::argument<1>
>, 0l
>
>
>, boost::fusion::traits::is_sequence<foo>, mpl_::bool_<false>
           , mpl_::bool_<false>, mpl_::bool_<false>
>, boost::mpl::equal_to<
             boost::fusion::result_of::size<
                 boost::phoenix::actor<
                     boost::proto::exprns_::basic_expr<
                         boost::proto::tagns_::tag::terminal
                       , boost::proto::argsns_::term<
                             boost::phoenix::argument<1>
>, 0l
>
>
>, boost::fusion::result_of::size<foo>
>, mpl_::bool_<true>, mpl_::bool_<true>, mpl_::bool_<true>
>'
 boost/boost/fusion/sequence/comparison/enable_comparison.hpp:26:12:
     required from 'boost::fusion::traits::enable_comparison<
         boost::phoenix::actor<
             boost::proto::exprns_::basic_expr<
                 boost::proto::tagns_::tag::terminal
               , boost::proto::argsns_::term<boost::phoenix::argument<1> >,
 0l
>
>, foo, void
>'
 boost/boost/utility/enable_if.hpp:36:10: required from 'boost
     ::enable_if<
         boost::fusion::traits::enable_comparison<
             boost::phoenix::actor<
                 boost::proto::exprns_::basic_expr<
                     boost::proto::tagns_::tag::terminal
                   ,
 boost::proto::argsns_::term<boost::phoenix::argument<1> >
                   , 0l
>
>, foo, void
>, bool
>'
 boost/boost/fusion/sequence/comparison/less.hpp:35:9: required by
     substitution of 'template<
         class boost::phoenix::actor<
             boost::proto::exprns_::basic_expr<
                 boost::proto::tagns_::tag::terminal
               , boost::proto::argsns_::term<boost::phoenix::argument<1> >,
 0l
>
>; Seq2 = foo, class Seq2
> boost::enable_if<
         boost::fusion::traits::enable_comparison<
             boost::phoenix::actor<
                 boost::proto::exprns_::basic_expr<
                     boost::proto::tagns_::tag::terminal
                   ,
 boost::proto::argsns_::term<boost::phoenix::argument<1> >
                   , 0l
>
>; Seq2 = foo, Seq2
>, bool
>::type boost::fusion::operators::operator<(
         const boost::phoenix::actor<
             boost::proto::exprns_::basic_expr<
                 boost::proto::tagns_::tag::terminal
               , boost::proto::argsns_::term<boost::phoenix::argument<1> >,
 0l
>
>; Seq2 = foo &, const Seq2 &
     )'
 test.cpp:19:52: required from here
 boost/boost/mpl/aux_/preprocessed/gcc/equal_to.hpp:60:29: error: no
     type named 'tag' in 'boost::fusion::result_of::size<
         boost::phoenix::actor<
             boost::proto::exprns_::basic_expr<
                 boost::proto::tagns_::tag::terminal
               , boost::proto::argsns_::term<boost::phoenix::argument<1> >,
 0l
>
>
>'
 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
     ::mpl::aux::nested_type_wknd<
         boost::mpl::equal_to<
             boost::fusion::result_of::size<
                 boost::phoenix::actor<
                     boost::proto::exprns_::basic_expr<
                         boost::proto::tagns_::tag::terminal
                       , boost::proto::argsns_::term<
                             boost::phoenix::argument<1>
>, 0l
>
>
>, boost::fusion::result_of::size<foo>
>
>':
 boost/boost/mpl/aux_/preprocessed/gcc/and.hpp:23:8: required from
     'boost::mpl::aux::and_impl<
         true
       , boost::mpl::equal_to<
             boost::fusion::result_of::size<
                 boost::phoenix::actor<
                     boost::proto::exprns_::basic_expr<
                         boost::proto::tagns_::tag::terminal
                       , boost::proto::argsns_::term<
                             boost::phoenix::argument<1>
>, 0l
>
>
>, boost::fusion::result_of::size<foo>
>, mpl_::bool_<true>, mpl_::bool_<true>, mpl_::bool_<true>
>'
 boost/boost/mpl/aux_/preprocessed/gcc/and.hpp:48:8: required from
     'boost::mpl::and_<
         boost::mpl::or_<
             boost::fusion::traits::is_sequence<
                 boost::phoenix::actor<
                     boost::proto::exprns_::basic_expr<
                         boost::proto::tagns_::tag::terminal
                       , boost::proto::argsns_::term<
                             boost::phoenix::argument<1>
>, 0l
>
>
>, boost::fusion::traits::is_sequence<foo>, mpl_::bool_<false>
           , mpl_::bool_<false>, mpl_::bool_<false>
>, boost::mpl::equal_to<
             boost::fusion::result_of::size<
                 boost::phoenix::actor<
                     boost::proto::exprns_::basic_expr<
                         boost::proto::tagns_::tag::terminal
                       , boost::proto::argsns_::term<
                             boost::phoenix::argument<1>
>, 0l
>
>
>, boost::fusion::result_of::size<foo>
>, mpl_::bool_<true>, mpl_::bool_<true>, mpl_::bool_<true>
>'
 boost/boost/fusion/sequence/comparison/enable_comparison.hpp:26:12:
     required from 'boost::fusion::traits::enable_comparison<
         boost::phoenix::actor<
             boost::proto::exprns_::basic_expr<
                 boost::proto::tagns_::tag::terminal
               , boost::proto::argsns_::term<boost::phoenix::argument<1> >,
 0l
>
>, foo, void
>'
 boost/boost/utility/enable_if.hpp:36:10: required from 'boost
     ::enable_if<
         boost::fusion::traits::enable_comparison<
             boost::phoenix::actor<
                 boost::proto::exprns_::basic_expr<
                     boost::proto::tagns_::tag::terminal
                   ,
 boost::proto::argsns_::term<boost::phoenix::argument<1> >
                   , 0l
>
>, foo, void
>, bool
>'
 boost/boost/fusion/sequence/comparison/less.hpp:35:9: required by
     substitution of 'template<
         class boost::phoenix::actor<
             boost::proto::exprns_::basic_expr<
                 boost::proto::tagns_::tag::terminal
               , boost::proto::argsns_::term<boost::phoenix::argument<1> >,
 0l
>
>; Seq2 = foo, class Seq2
> boost::enable_if<
         boost::fusion::traits::enable_comparison<
             boost::phoenix::actor<
                 boost::proto::exprns_::basic_expr<
                     boost::proto::tagns_::tag::terminal
                   ,
 boost::proto::argsns_::term<boost::phoenix::argument<1> >
                   , 0l
>
>; Seq2 = foo, Seq2
>, bool
>::type boost::fusion::operators::operator<(
         const boost::phoenix::actor<
             boost::proto::exprns_::basic_expr<
                 boost::proto::tagns_::tag::terminal
               , boost::proto::argsns_::term<boost::phoenix::argument<1> >,
 0l
>
>; Seq2 = foo &, const Seq2 &
     )'
 test.cpp:19:52: required from here
 boost/boost/mpl/aux_/nested_type_wknd.hpp:26:31: error: no type named
     'type' in 'boost::mpl::equal_to<
         boost::fusion::result_of::size<
             boost::phoenix::actor<
                 boost::proto::exprns_::basic_expr<
                     boost::proto::tagns_::tag::terminal
                   ,
 boost::proto::argsns_::term<boost::phoenix::argument<1> >
                   , 0l
>
>
>, boost::fusion::result_of::size<foo>
>'
 In file included from boost/boost/mpl/aux_/include_preprocessed.hpp
     :37:0,
 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
     'boost::mpl::aux::and_impl<
         true
       , boost::mpl::equal_to<
             boost::fusion::result_of::size<
                 boost::phoenix::actor<
                     boost::proto::exprns_::basic_expr<
                         boost::proto::tagns_::tag::terminal
                       , boost::proto::argsns_::term<
                             boost::phoenix::argument<1>
>, 0l
>
>
>, boost::fusion::result_of::size<foo>
>, mpl_::bool_<true>, mpl_::bool_<true>, mpl_::bool_<true>
>':
 boost/boost/mpl/aux_/preprocessed/gcc/and.hpp:48:8: required from
     'boost::mpl::and_<
         boost::mpl::or_<
             boost::fusion::traits::is_sequence<
                 boost::phoenix::actor<
                     boost::proto::exprns_::basic_expr<
                         boost::proto::tagns_::tag::terminal
                       , boost::proto::argsns_::term<
                             boost::phoenix::argument<1>
>, 0l
>
>
>, boost::fusion::traits::is_sequence<foo>, mpl_::bool_<false>
           , mpl_::bool_<false>, mpl_::bool_<false>
>, boost::mpl::equal_to<
             boost::fusion::result_of::size<
                 boost::phoenix::actor<
                     boost::proto::exprns_::basic_expr<
                         boost::proto::tagns_::tag::terminal
                       , boost::proto::argsns_::term<
                             boost::phoenix::argument<1>
>, 0l
>
>
>, boost::fusion::result_of::size<foo>
>, mpl_::bool_<true>, mpl_::bool_<true>, mpl_::bool_<true>
>'
 boost/boost/fusion/sequence/comparison/enable_comparison.hpp:26:12:
     required from 'boost::fusion::traits::enable_comparison<
         boost::phoenix::actor<
             boost::proto::exprns_::basic_expr<
                 boost::proto::tagns_::tag::terminal
               , boost::proto::argsns_::term<boost::phoenix::argument<1> >,
 0l
>
>, foo, void
>'
 boost/boost/utility/enable_if.hpp:36:10: required from 'boost
     ::enable_if<
         boost::fusion::traits::enable_comparison<
             boost::phoenix::actor<
                 boost::proto::exprns_::basic_expr<
                     boost::proto::tagns_::tag::terminal
                   ,
 boost::proto::argsns_::term<boost::phoenix::argument<1> >
                   , 0l
>
>, foo, void
>, bool
>'
 boost/boost/fusion/sequence/comparison/less.hpp:35:9: required by
     substitution of 'template<
         class boost::phoenix::actor<
             boost::proto::exprns_::basic_expr<
                 boost::proto::tagns_::tag::terminal
               , boost::proto::argsns_::term<boost::phoenix::argument<1> >,
 0l
>
>; Seq2 = foo, class Seq2
> boost::enable_if<
         boost::fusion::traits::enable_comparison<
             boost::phoenix::actor<
                 boost::proto::exprns_::basic_expr<
                     boost::proto::tagns_::tag::terminal
                   ,
 boost::proto::argsns_::term<boost::phoenix::argument<1> >
                   , 0l
>
>; Seq2 = foo, Seq2
>, bool
>::type boost::fusion::operators::operator<(
         const boost::phoenix::actor<
             boost::proto::exprns_::basic_expr<
                 boost::proto::tagns_::tag::terminal
               , boost::proto::argsns_::term<boost::phoenix::argument<1> >,
 0l
>
>; Seq2 = foo &, const Seq2 &
     )'
 test.cpp:19:52: required from here
 boost/boost/mpl/aux_/preprocessed/gcc/and.hpp:23:8: error: 'value' is
     not a member of 'boost::mpl::aux::nested_type_wknd<
         boost::mpl::equal_to<
             boost::fusion::result_of::size<
                 boost::phoenix::actor<
                     boost::proto::exprns_::basic_expr<
                         boost::proto::tagns_::tag::terminal
                       , boost::proto::argsns_::term<
                             boost::phoenix::argument<1>
>, 0l
>
>
>, boost::fusion::result_of::size<foo>
>
>'
 In file included from boost/boost/fusion/sequence/intrinsic/begin.hpp
     :11:0,
 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
     ::enable_if<
         boost::fusion::traits::enable_comparison<
             boost::phoenix::actor<
                 boost::proto::exprns_::basic_expr<
                     boost::proto::tagns_::tag::terminal
                   ,
 boost::proto::argsns_::term<boost::phoenix::argument<1> >
                   , 0l
>
>, foo, void
>, bool
>':
 boost/boost/fusion/sequence/comparison/less.hpp:35:9: required by
     substitution of 'template<
         class boost::phoenix::actor<
             boost::proto::exprns_::basic_expr<
                 boost::proto::tagns_::tag::terminal
               , boost::proto::argsns_::term<boost::phoenix::argument<1> >,
 0l
>
>; Seq2 = foo, class Seq2
> boost::enable_if<
         boost::fusion::traits::enable_comparison<
             boost::phoenix::actor<
                 boost::proto::exprns_::basic_expr<
                     boost::proto::tagns_::tag::terminal
                   ,
 boost::proto::argsns_::term<boost::phoenix::argument<1> >
                   , 0l
>
>; Seq2 = foo, Seq2
>, bool
>::type boost::fusion::operators::operator<(
         const boost::phoenix::actor<
             boost::proto::exprns_::basic_expr<
                 boost::proto::tagns_::tag::terminal
               , boost::proto::argsns_::term<boost::phoenix::argument<1> >,
 0l
>
>; Seq2 = foo &, const Seq2 &
     )'
 test.cpp:19:52: required from here
 boost/boost/utility/enable_if.hpp:36:10: error: 'value' is not a
     member of 'boost::fusion::traits::enable_comparison<
         boost::phoenix::actor<
             boost::proto::exprns_::basic_expr<
                 boost::proto::tagns_::tag::terminal
               , boost::proto::argsns_::term<boost::phoenix::argument<1> >,
 0l
>
>, foo, void
>'

-- 
Ticket URL: <https://svn.boost.org/trac/boost/ticket/6268>
Boost C++ Libraries <http://www.boost.org/>
Boost provides free peer-reviewed portable C++ source libraries.

This archive was generated by hypermail 2.1.7 : 2017-02-16 18:50:08 UTC