Я хотел бы использовать 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 &'?