我想使用 Boost Phoenix 生成一个 lambda 函数,用于对包含引用类型成员的结构进行 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&' ?