次のコードでは、次のようになります。
BOOST_FOREACH(std::pair<PID, bool> &itval, completedEs_) {
allCompleted &= it->second;
}
このエラーが発生します:
エラー:マクロ "BOOST_FOREACH"は3つの引数を渡しましたが、2つしかかかりません
私は2つの引数しか渡していないのですが、どうなっているのでしょうか。
次のコードでは、次のようになります。
BOOST_FOREACH(std::pair<PID, bool> &itval, completedEs_) {
allCompleted &= it->second;
}
このエラーが発生します:
エラー:マクロ "BOOST_FOREACH"は3つの引数を渡しましたが、2つしかかかりません
私は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;
}
//...