我想使用Boost Phoenix生成一個lambda函數,用於包含引用類型成員的結構的std :: find_if操作。一個人爲的例子如下:Boost Phoenix:綁定到參考結構的成員?
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 &'類型的工作?