Я хотел бы предоставить API, который принимает пользовательскую лямбду Boost Phoenix. В отличие от лямбды C ++ 11, лямбда-феникс полиморфна.
Я могу использовать []
оператор лямбда-аргумента. Следующий фрагмент выведет первый элемент массива arr
:
int arr[4] = {1,2,3,4};
cout << _1[_2](arr,0) << endl;
Как я могу позволить пользователю получить доступ к данным члена или методам лямбда-аргумента? Например, следующий фрагмент кода не скомпилируется; давая: ошибка: у типа const нет члена с именем x
struct vec2 { float x,y; };
vec2 v2{1,2};
cout << ((_1).x)(v2) << endl;
Задача ещё не решена.
Других решений пока нет …