Boost Phoenix を使用して、参照型メンバーを含む構造体の std::find_if 操作で使用するラムダ関数を生成したいと考えています。考案された例は次のとおりです。
struct MyStruct
{
MyStruct() : x(0) {}
int& x;
};
std::vector<MyStruct> AllStructs;
// Search the array for an element for which x == 5
const std::vector<MyStruct>::const_iterator& it =
find_if(
AllStructs.begin(),
AllStructs.end(),
bind(&MyStruct::x, arg1) == 5
);
MyStruct::x が int& ではなく int 型の場合、正常にコンパイルされます。しかし、参照メンバーを使用すると、「参照メンバーへのポインターは不正です」というエラーが表示されます。
ネットで調べてみると、Phoenix の「ref」機能を使用する必要があるようですが、必要な構文がわかりません。
これをタイプ 'int&' で機能させる方法を知っている人はいますか?