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。啊,太好了。。提升精神,使用凤凰,修复了它!谢谢