升压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个参数,这是怎么回事?
答
第一类被解析为两个参数,因为它包含了一个逗号。 作为一种变通方法,你可以的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;
}
//...
http://*.com/questions/716865/c-boost-any-gotchas-with-boost-foreach/716872#716872 – phooji 2011-03-24 04:05:20
和:HTTP: //*.com/questions/2104208/is-it-possible-to-use-boostforeach-with-stdmap – GManNickG 2011-03-24 04:28:17