C++ 提升灵气,占位符发挥作用

C++ 提升灵气,占位符发挥作用,c++,boost,boost-spirit-qi,C++,Boost,Boost Spirit Qi,我很难理解以下几点: int main( int, char *[] ) { const string test( "1 2" ); typedef string::const_iterator iterator; auto desired = []( int a, int b ) { }; auto working = []( boost::fusion::vector2<int,int> ) { };

我很难理解以下几点:

int main( int, char *[] )
{
    const string test( "1 2" );
    typedef string::const_iterator iterator;

    auto desired = []( int a, int b )
    {
    };

    auto working = []( boost::fusion::vector2<int,int> )
    {
    };

    iterator i = test.begin( );
    qi::phrase_parse( i, test.end( ),
                     (
                      qi::int_ >>
                       qi::int_
                      )
                     [ working ]
//                   [ ph::bind( desired, qi::_1, qi::_2 ) ]
                     , qi::ascii::space );

    return test.end( ) - i;
}
我知道它主要是代码,但我认为它是不言自明的; “正在工作”回调是可以的,但如果我用所需的行注释掉它,编译器会用以下词语说“不”:

/opt/local/include/boost/spirit/home/phoenix/core/detail/function_eval.hpp:115:30: “模板”关键字后面的“结果”不引用模板

/opt/local/include/boost/mpl/eval_if.hpp:38:22:Type'f_uu'又名'int' 无法在“:”之前使用,因为它没有成员

/opt/local/include/boost/spirit/home/support/action\u dispatch.hpp:178:13: 对“const”类型的对象的调用没有匹配函数 菲尼克斯:演员,向量>,引数,引数, void,void,void,void,void,void,void,void,void

我试过phoenix::bind,boost::bind,编写自己的包装器。。。没有成功。 嗯,我自己的包装确实有效,但不是模板包装,所以这是无用的,我认为这是凤凰的工作无论如何


任何帮助都将不胜感激

clang++3.4.2和Boost 1.56。我建议定义BOOST\u SPIRIT\u USE\u PHOENIX\u V3这是1.56中的默认值,可能只有在需要时才定义BOOST\u RESULT\u OF\u USE\u DECLTYPE。啊,太好了。。提升精神,使用凤凰,修复了它!谢谢