升压C++宏参数计数错误

问题描述:

在下面的代码:升压C++宏参数计数错误

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

我得到这个错误:

error: macro "BOOST_FOREACH" passed 3 arguments, but takes just 2

我只是路过2个参数,这是怎么回事?

+0

http://*.com/questions/716865/c-boost-any-gotchas-with-boost-foreach/716872#716872 – phooji 2011-03-24 04:05:20

+0

和:HTTP: //*.com/questions/2104208/is-it-possible-to-use-boostforeach-with-stdmap – GManNickG 2011-03-24 04:28:17

第一类被解析为两个参数,因为它包含了一个逗号。 作为一种变通方法,你可以的typedef类型:

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

你不能这样做,因为的BOOST_FOREACH宏局限,把它改写喜欢:

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