Boost C++ macro argument count error
-
29-10-2019 - |
Question
In the following piece of code:
BOOST_FOREACH(std::pair<PID, bool> &itval, completedEs_) {
allCompleted &= it->second;
}
I'm getting this error:
error: macro "BOOST_FOREACH" passed 3 arguments, but takes just 2
I'm only passing 2 arguments, what's going on?
Solution
The first type is being parsed as two arguments since it contains a comma. As a workaround you could typedef the type:
typedef std::pair<PID, bool> PID_bool_pair;
BOOST_FOREACH( PID_bool_pair &itval, completedEs_) {
...
}
OTHER TIPS
You can't do that because of BOOST_FOREACH macro limitations, rewrite it like:
//...
typedef std::pair<PID, bool> mypair;
BOOST_FOREACH(mypair &itval, completedEs_) {
allCompleted &= it->second;
}
//...
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow