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