Boost C ++宏参数计数错误

时间:2011-03-24 04:03:28

标签: c++ boost macros foreach boost-foreach

在下面的代码中:

BOOST_FOREACH(std::pair<PID, bool> &itval, completedEs_) {
    allCompleted &= it->second;
}

我收到了这个错误:

  

错误:宏“BOOST_FOREACH”通过3   参数,但只需要2

我只传递了2个参数,发生了什么?

2 个答案:

答案 0 :(得分:7)

第一种类型被解析为两个参数,因为它包含一个逗号。 作为一种解决方法,您可以键入以下类型:

typedef std::pair<PID, bool> PID_bool_pair;
BOOST_FOREACH( PID_bool_pair &itval, completedEs_) {
    ...
}

答案 1 :(得分:2)

由于BOOST_FOREACH宏限制,你不能这样做,重写如下:

//...
typedef std::pair<PID, bool> mypair;
BOOST_FOREACH(mypair &itval, completedEs_) {
    allCompleted &= it->second;
}
//...