3

次のコードでは、次のようになります。

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

このエラーが発生します:

エラー:マクロ "BOOST_FOREACH"は3つの引数を渡しましたが、2つしかかかりません

私は2つの引数しか渡していないのですが、どうなっているのでしょうか。

4

2 に答える 2

8

最初のタイプは、コンマが含まれているため、2つの引数として解析されています。回避策として、次のタイプをtypedefすることができます。

typedef std::pair<PID, bool> PID_bool_pair;
BOOST_FOREACH( PID_bool_pair &itval, completedEs_) {
    ...
}
于 2011-03-24T04:07:33.887 に答える
2

BOOST_FOREACHマクロの制限のため、これを行うことはできません。次のように書き直してください。

//...
typedef std::pair<PID, bool> mypair;
BOOST_FOREACH(mypair &itval, completedEs_) {
    allCompleted &= it->second;
}
//...
于 2011-03-24T04:06:28.930 に答える