BOOST_参数_函数最多可以处理5个参数?

BOOST_参数_函数最多可以处理5个参数?,boost,parameters,Boost,Parameters,运行下面的代码时,出现以下错误(在kubuntu 12.04上运行的boost版本1.46.1-7ubuntu3): test_param_bug.cpp:34:1:错误:模板参数的数量错误(6,应该是5) /usr/include/boost/parameter/parameters.hpp:714:8:错误:为“模板结构boost::parameter::parameters”提供 包含在test_param_bug.cpp:2:0中的文件中: /usr/include/boost/para

运行下面的代码时,出现以下错误(在kubuntu 12.04上运行的boost版本1.46.1-7ubuntu3):

test_param_bug.cpp:34:1:错误:模板参数的数量错误(6,应该是5)
/usr/include/boost/parameter/parameters.hpp:714:8:错误:为“模板结构boost::parameter::parameters”提供
包含在test_param_bug.cpp:2:0中的文件中:
/usr/include/boost/parameter/preprocessor.hpp:在“boost::parameter::aux::argument_pack”的实例化中:
test_param_bug.cpp:34:1:从此处实例化
/usr/include/boost/parameter/preprocessor.hpp:157:13:错误:“struct boost\u param\u params\u 34func”中没有名为“parameter\u spec0”的类型
/usr/include/boost/parameter/preprocessor.hpp:158:47:错误:“struct boost\u param\u params\u 34func”中没有名为“parameter\u spec0”的类型
测试参数错误。cpp:34:1:错误:模板参数1无效
test_param_bug.cpp:34:1:错误:“func”之前应为初始值设定项
test_param_bug.cpp:34:1:错误:模板参数的数量错误(7,应该是6)
/usr/include/boost/parameter/preprocessor.hpp:148:8:错误:为“模板结构boost::parameter::aux::argument\u pack”提供
测试参数错误。cpp:34:1:错误:模板参数1无效
test_param_bug.cpp:34:1:错误:模板参数的数量错误(7,应该是6)
/usr/include/boost/parameter/preprocessor.hpp:98:8:错误:为“模板结构boost::parameter::aux::match”提供
test_param_bug.cpp:在函数“int main()”中:
test_param_bug.cpp:41:10:错误:调用'func()'时没有匹配的函数
测试参数错误。cpp:41:10:注:候选项为:
……切。。。。
不过,它最多可以使用五个参数。这将是很好的运行,因为我认为这是一个方便的功能。这是一个众所周知的限制还是我没有正确使用它

BOOST_PARAMETER_FUNCTION(
  (void),
  func,
  tag, 
  (optional
   (param1, (int), 0)
   (param2, (int), 0)
   (param3, (int), 0)
   (param4, (int), 0)
   (param5, (int), 0)
   (param6, (int), 0) //<- won't work. too many arguments?
   )
  )
{
}
BOOST_参数_函数(
(无效),
func,
标签,
(可选)
(参数1,(int),0)
(参数2,(int),0)
(参数3,(int),0)
(参数4,(int),0)
(参数5,(int),0)

(param6,(int),0)/Boost中函数的最大参数数。可以使用
#define Boost_Parameter_max_ARITY n
配置参数(本例中n=6)在包含标题之前。在boost 1.49之前,此参数的默认值为
5
。之后的值为
8
。我相信增加此数值会影响程序的编译时间,因此您应该将其设置为所需的值,而不是任意高

BOOST_PARAMETER_FUNCTION(
  (void),
  func,
  tag, 
  (optional
   (param1, (int), 0)
   (param2, (int), 0)
   (param3, (int), 0)
   (param4, (int), 0)
   (param5, (int), 0)
   (param6, (int), 0) //<- won't work. too many arguments?
   )
  )
{
}