I couldn't see any explicit mention of what compilers are supported or tested.
Errors below from boost 1.55 (I get a different set of errors in 1.72, they are at the bottom).
Problem is with the definition of the placeholders it appears.
test.cpp
boost\proto\detail\preprocessed\poly_function_funop.hpp(12) : error C2976: 'boost::proto::functional::has_env_var<Key>::impl' : too few template arguments
with
[
Key=boost::proto::envns_::transforms_type
]
boost\proto\transform\env.hpp(254) : see declaration of 'boost::proto::functional::has_env_var<Key>::impl'
with
[
Key=boost::proto::envns_::transforms_type
]
boost\utility\result_of.hpp(187) : see reference to class template instantiation 'boost::proto::detail::poly_function<Derived>::result<Sig>' being compiled
with
[
Derived=boost::proto::functional::has_env_var<boost::proto::envns_::transforms_type>,
Sig=boost::proto::functional::has_env_var<boost::proto::envns_::transforms_type> (boost::phoenix::result_of::actions<boost::phoenix::vector2<boost::mpl::true_,boost::phoenix::is_nullary>>::type )
]
boost\utility\result_of.hpp(194) : see reference to class template instantiation 'boost::detail::result_of_nested_result<F,FArgs>' being compiled
with
[
F=boost::remove_cv<boost::proto::functional::has_env_var<boost::proto::envns_::transforms_type>>::type,
FArgs=boost::proto::functional::has_env_var<boost::proto::envns_::transforms_type> (boost::phoenix::result_of::actions<boost::phoenix::vector2<boost::mpl::true_,boost::phoenix::is_nullary>>::type )
]
boost\utility\detail\result_of_iterate.hpp(37) : see reference to class template instantiation 'boost::detail::tr1_result_of_impl<F,FArgs,HasResultType>' being compiled
with
[
F=boost::remove_cv<boost::proto::functional::has_env_var<boost::proto::envns_::transforms_type>>::type,
FArgs=boost::remove_cv<boost::proto::functional::has_env_var<boost::proto::envns_::transforms_type>>::type (boost::phoenix::result_of::actions<boost::phoenix::vector2<boost::mpl::true_,boost::phoenix::is_nullary>>::type ),
HasResultType=false
]
boost\utility\detail\result_of_iterate.hpp(160) : see reference to class template instantiation 'boost::tr1_result_of<F>' being compiled
with
[
F=boost::proto::functional::has_env_var<boost::proto::envns_::transforms_type> (boost::phoenix::result_of::actions<boost::phoenix::vector2<boost::mpl::true_,boost::phoenix::is_nullary>>::type )
]
boost\proto\transform\env.hpp(367) : see reference to class template instantiation 'boost::result_of<F>' being compiled
with
[
F=boost::proto::functional::has_env_var<boost::proto::envns_::transforms_type> (boost::phoenix::result_of::actions<boost::phoenix::vector2<boost::mpl::true_,boost::phoenix::is_nullary>>::type )
]
boost\proto\transform\when.hpp(189) : see reference to class template instantiation 'boost::proto::result_of::has_env_var<Env,Key>' being compiled
with
[
Env=boost::phoenix::result_of::actions<boost::phoenix::vector2<boost::mpl::true_,boost::phoenix::is_nullary>>::type ,
Key=boost::proto::envns_::transforms_type
]
boost\proto\matches.hpp(762) : see reference to class template instantiation 'boost::proto::when<Grammar,PrimitiveTransform>::impl<Expr,State,Data>' being compiled
with
[
Grammar=boost::phoenix::rule::argument,
PrimitiveTransform=boost::proto::external_transform,
Expr=const boost::phoenix::actor<boost::phoenix::expression::terminal<boost::phoenix::argument<1>>::base_type>::proto_base_expr &,
State=boost::phoenix::result_of::env<boost::phoenix::vector2<boost::mpl::true_,boost::phoenix::is_nullary>>::type ,
Data=boost::phoenix::result_of::actions<boost::phoenix::vector2<boost::mpl::true_,boost::phoenix::is_nullary>>::type
]
boost\proto\matches.hpp(836) : see reference to class template instantiation 'boost::proto::or_<G0,G1,G2>::impl<Expr,State,Data>' being compiled
with
[
G0=boost::phoenix::enable_rule<boost::phoenix::rule::argument,void>,
G1=boost::phoenix::enable_rule<boost::phoenix::rule::custom_terminal,void>,
G2=boost::phoenix::enable_rule<boost::phoenix::rule::terminal,void>,
Expr=const boost::phoenix::actor<boost::phoenix::expression::terminal<boost::phoenix::argument<1>>::base_type>::proto_base_expr &,
State=boost::phoenix::result_of::env<boost::phoenix::vector2<boost::mpl::true_,boost::phoenix::is_nullary>>::type ,
Data=boost::phoenix::result_of::actions<boost::phoenix::vector2<boost::mpl::true_,boost::phoenix::is_nullary>>::type
]
boost\phoenix\core\meta_grammar.hpp(66) : see reference to class template instantiation 'boost::proto::switch_<Cases>::impl<Expr,State,Data>' being compiled
with
[
Cases=boost::phoenix::meta_grammar,
Expr=const boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<boost::phoenix::argument<1>>,0> &,
State=boost::phoenix::result_of::env<boost::phoenix::vector2<boost::mpl::true_,boost::phoenix::is_nullary>>::type,
Data=boost::phoenix::result_of::actions<boost::phoenix::vector2<boost::mpl::true_,boost::phoenix::is_nullary>>::type
]
boost\phoenix\core\is_nullary.hpp(123) : see reference to class template instantiation 'boost::phoenix::evaluator::impl<Expr,State,Data>' being compiled
with
[
Expr=const boost::phoenix::actor<boost::phoenix::expression::terminal<boost::phoenix::argument<1>>::base_type>::proto_base_expr &,
State=boost::phoenix::vector2<boost::mpl::true_,boost::phoenix::is_nullary>,
Data=boost::proto::envns_::empty_env
]
boost\phoenix\core\detail\preprocessed\actor_result_of_10.hpp(34) : see reference to class template instantiation 'boost::phoenix::result_of::is_nullary<Expr>' being compiled
with
[
Expr=boost::phoenix::actor<boost::phoenix::expression::terminal<boost::phoenix::argument<1>>::base_type>::proto_base_expr
]
boost\phoenix\core\actor.hpp(239) : see reference to class template instantiation 'boost::phoenix::result_of::actor<Expr>' being compiled
with
[
Expr=boost::phoenix::actor<boost::phoenix::expression::terminal<boost::phoenix::argument<1>>::base_type>::proto_base_expr
]
boost\phoenix\core\preprocessed\argument_predefined_10.hpp(13) : see reference to class template instantiation 'boost::phoenix::actor<Expr>' being compiled
with
[
Expr=boost::phoenix::expression::terminal<boost::phoenix::argument<1>>::base_type
]
boost\proto\detail\preprocessed\poly_function_funop.hpp(12) : error C2955: 'boost::proto::functional::has_env_var<Key>::impl' : use of class template requires template argument list
with
[
Key=boost::proto::envns_::transforms_type
]
boost\proto\transform\env.hpp(254) : see declaration of 'boost::proto::functional::has_env_var<Key>::impl'
with
[
Key=boost::proto::envns_::transforms_type
]
boost\proto\transform\env.hpp(368) : fatal error C1903: unable to recover from previous error(s); stopping compilation
Errors I get with 1.72:
test.cpp
boost\fusion\algorithm\iteration\detail\preprocessed\fold.hpp(35) : error C2975: 'boost::fusion::detail::result_of_it_fold' : invalid template argument for 'function-parameter', compile-time evaluatable constant expression expected
boost\fusion\algorithm\iteration\detail\preprocessed\fold.hpp(27) : see declaration of 'boost::fusion::detail::result_of_it_fold'
boost\fusion\algorithm\iteration\detail\preprocessed\fold.hpp(37) : error C3855: 'boost::fusion::detail::result_of_it_fold': template parameter 'SeqSize' is incompatible with the declaration
boost\fusion\algorithm\iteration\detail\preprocessed\fold.hpp(37) : error C2976: 'boost::fusion::detail::result_of_it_fold' : too few template arguments
boost\fusion\algorithm\iteration\detail\preprocessed\fold.hpp(37) : see declaration of 'boost::fusion::detail::result_of_it_fold'
boost\fusion\algorithm\iteration\detail\preprocessed\fold.hpp(65) : error C2976: 'boost::fusion::detail::result_of_it_fold' : too few template arguments
boost\fusion\algorithm\iteration\detail\preprocessed\fold.hpp(65) : see declaration of 'boost::fusion::detail::result_of_it_fold'
boost\fusion\algorithm\iteration\detail\preprocessed\fold.hpp(68) : error C2955: 'boost::fusion::detail::result_of_it_fold' : use of class template requires template argument list
boost\fusion\algorithm\iteration\detail\preprocessed\fold.hpp(65) : see declaration of 'boost::fusion::detail::result_of_it_fold'
boost\fusion\algorithm\iteration\detail\preprocessed\fold.hpp(68) : error C2039: 'type' : is not a member of 'boost::fusion::detail::result_of_it_fold'
boost\fusion\algorithm\iteration\detail\preprocessed\fold.hpp(65) : see declaration of 'boost::fusion::detail::result_of_it_fold'
boost\fusion\algorithm\iteration\detail\preprocessed\fold.hpp(74) : error C2146: syntax error : missing ';' before identifier 'it_fold'
boost\fusion\algorithm\iteration\detail\preprocessed\fold.hpp(74) : error C2433: 'type' : 'inline' not permitted on data declarations
boost\fusion\algorithm\iteration\detail\preprocessed\fold.hpp(74) : error C2501: 'type' : missing storage-class or type specifiers
boost\fusion\algorithm\iteration\detail\preprocessed\fold.hpp(74) : error C2061: syntax error : identifier 'It'
boost\fusion\algorithm\iteration\detail\preprocessed\fold.hpp(88) : error C3203: 'result_of_it_fold' : class template invalid as template argument for template parameter 'T', expected a real type
boost\fusion\algorithm\iteration\detail\preprocessed\reverse_fold.hpp(34) : error C2975: 'boost::fusion::detail::result_of_it_reverse_fold' : invalid template argument for 'function-parameter', compile-time evaluatable constant expression expected
boost\fusion\algorithm\iteration\detail\preprocessed\reverse_fold.hpp(26) : see declaration of 'boost::fusion::detail::result_of_it_reverse_fold'
boost\fusion\algorithm\iteration\detail\preprocessed\reverse_fold.hpp(36) : error C3855: 'boost::fusion::detail::result_of_it_reverse_fold': template parameter 'SeqSize' is incompatible with the declaration
boost\fusion\algorithm\iteration\detail\preprocessed\reverse_fold.hpp(36) : error C2976: 'boost::fusion::detail::result_of_it_reverse_fold' : too few template arguments
boost\fusion\algorithm\iteration\detail\preprocessed\reverse_fold.hpp(36) : see declaration of 'boost::fusion::detail::result_of_it_reverse_fold'
boost\fusion\algorithm\iteration\detail\preprocessed\reverse_fold.hpp(64) : error C2976: 'boost::fusion::detail::result_of_it_reverse_fold' : too few template arguments
boost\fusion\algorithm\iteration\detail\preprocessed\reverse_fold.hpp(64) : see declaration of 'boost::fusion::detail::result_of_it_reverse_fold'
boost\fusion\algorithm\iteration\detail\preprocessed\reverse_fold.hpp(67) : error C2955: 'boost::fusion::detail::result_of_it_reverse_fold' : use of class template requires template argument list
boost\fusion\algorithm\iteration\detail\preprocessed\reverse_fold.hpp(64) : see declaration of 'boost::fusion::detail::result_of_it_reverse_fold'
boost\fusion\algorithm\iteration\detail\preprocessed\reverse_fold.hpp(67) : error C2039: 'type' : is not a member of 'boost::fusion::detail::result_of_it_reverse_fold'
boost\fusion\algorithm\iteration\detail\preprocessed\reverse_fold.hpp(64) : see declaration of 'boost::fusion::detail::result_of_it_reverse_fold'
boost\fusion\algorithm\iteration\detail\preprocessed\reverse_fold.hpp(73) : error C2146: syntax error : missing ';' before identifier 'it_reverse_fold'
boost\fusion\algorithm\iteration\detail\preprocessed\reverse_fold.hpp(73) : error C2433: 'type' : 'inline' not permitted on data declarations
boost\fusion\algorithm\iteration\detail\preprocessed\reverse_fold.hpp(73) : error C2501: 'type' : missing storage-class or type specifiers
boost\fusion\algorithm\iteration\detail\preprocessed\reverse_fold.hpp(73) : error C2086: 'int boost::fusion::detail::type' : redefinition
boost\fusion\algorithm\iteration\detail\preprocessed\fold.hpp(74) : see declaration of 'boost::fusion::detail::type'
boost\fusion\algorithm\iteration\detail\preprocessed\reverse_fold.hpp(73) : error C2061: syntax error : identifier 'It'
boost\fusion\algorithm\iteration\detail\preprocessed\reverse_fold.hpp(87) : error C3203: 'result_of_it_reverse_fold' : class template invalid as template argument for template parameter 'T', expected a real type
Microsoft Visual C++ Toolkit 2003\include\ostream(604) : fatal error C1903: unable to recover from previous error(s); stopping compilation
I couldn't see any explicit mention of what compilers are supported or tested.
Errors below from boost 1.55 (I get a different set of errors in 1.72, they are at the bottom). Problem is with the definition of the placeholders it appears.
Code is just:
Command line:
cl.exe "test.cpp" /Fo"test.obj" /GR /MD /Gy /W3 /EHsc /Gd /Gm- /arch:SSE2 /Zm200 /DWIN32 /D_WINDOWS /D_USRDLL /I"Microsoft Visual C++ Toolkit 2003/include" /I"Microsoft SDKs\Windows\v6.0/Include" /I"Microsoft SDKs\Windows\v6.0/Include/mfc" /nologo /Z7 /Od /RTC1 /D_DEBUG /c /I"boost_1_55_0"
Output:
Errors I get with 1.72: