0
私は以下のようなユーザタイプのstd :: vectorをカプセル化するより複雑なラッパークラスのバージョンを持っています。私はFilter.Filter.Mapなどのようないくつかの連鎖のものをやっているmem_fnによって作成された関数ポインタの結果を否定する方法
struct UserType1Encapsulator
{
template <typename F>
UserType1Encapsulator& Filter(F filterFunction)
{
std::vector<userType1> newList;
for (size_t i = 0; i < iTerrainList.size(); i++) --> can't use range for loop vs2010
{
if (filterFunction(iTerrainList[i]))
newList.push_back(iTerrainList[i]);
}
encapsulatedList = newList;
return *this;
}
std::vector<userType1> encapsulatedList;
}
..私は見つけるまで、私は私が
のように渡しています関数ポインタの操作を否定する必要が良かったすべて
userVec.Filter(std::mem_fn(&userType1::isCopy));
私は
userVec.Filter(std::not1(std::mem_fn(&userType1::isCopy)));
のようなものを使用する必要があります。しかし、私はそれを使用するかどうかはわからない
d残念ながら私はlamdbasにアクセスすることはできません.GCC 4.8でコンパイルしていてもvs2010でコンパイルする必要があるからです。
std :: mem_fnの結果を無効にし、vs2010でコンパイルする正しい方法は何ですか?
おかげで良い残りを。私の場合は、熟読者がこのような長いオブジェクトを気に入らない機能パターンに精通していないので、この構文的な砂糖が必要な場合があります。 –
いいえ構文解析的な砂糖はありません。より良い査読者を見つける:P –
私は今このソリューションをstd :: not1、std :: unary_negationなどのような軽いものを期待して使用しました... –