提升精神凤凰功能错误

时间:2014-07-24 04:12:26

标签: boost-spirit boost-spirit-qi

这段代码来自boost spirit libs的例子,没关系:

on_error<fail>(expr,error_handler_function(eh)("expecting ", _4, _3));

但是,此代码无法在Xcode中编译:

on_error<fail>(expr,error_handler_function(eh)("expecting ", _4, _3, _1)); 

错误消息:

/usr/local/include/boost/spirit/home/phoenix/core/detail/function_eval.hpp:115:30:
    error: too many template arguments for class template 'result'

    fn::template result<BOOST_PP_ENUM_PARAMS(N, a)>
                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~

eh(error_handle)是对的,我添加了_1的参数。

1 个答案:

答案 0 :(得分:2)

您添加了参数,但未能添加模板参数。

它需要是一个模板参数,因为Phoenix期望完全多态的仿函数。


可能(取决于编译器和库版本),您可以使用

删除一些限制
#define BOOST_SPIRIT_USE_PHOENIX_V3
// and/or
#define BOOST_RESULT_OF_USE_DECLTYPE