Skip to content

VC7.1 errors when including <boost/phoenix.hpp> #91

@billw2012

Description

@billw2012

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:

#include <boost/phoenix.hpp>

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:

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions