【问题标题】:Boost C++ macro argument count errorBoost C++宏参数计数错误
【发布时间】:2011-03-24 04:03:27
【问题描述】:
在以下代码中:
BOOST_FOREACH(std::pair<PID, bool> &itval, completedEs_) {
allCompleted &= it->second;
}
我收到此错误:
错误:宏“BOOST_FOREACH”已通过 3
参数,但只需要 2
我只传递了 2 个参数,这是怎么回事?
【问题讨论】:
标签:
c++
boost
macros
foreach
boost-foreach
【解决方案1】:
第一种类型被解析为两个参数,因为它包含一个逗号。
作为一种解决方法,您可以 typedef 类型:
typedef std::pair<PID, bool> PID_bool_pair;
BOOST_FOREACH( PID_bool_pair &itval, completedEs_) {
...
}
【解决方案2】:
由于 BOOST_FOREACH 宏的限制,您不能这样做,请将其重写为:
//...
typedef std::pair<PID, bool> mypair;
BOOST_FOREACH(mypair &itval, completedEs_) {
allCompleted &= it->second;
}
//...