Это дополнительный вопрос к этому вопросу: Лямбда, как я могу передать в качестве параметра
MSDN предположительно пометил элемент как исправленный. Я взглянул на спецификации, но у меня возникли проблемы с преобразованием их спецификаций в синтаксис.
Так, например:
void printOut(int(*eval)(int))
{
for(int x = 0; x < 4; ++x)
{
std::cout << eval(x) << std::endl;
}
}
Теперь скажите, что у меня есть лямбда:
auto lambda1 = [](int x)->int{return x;};
Каков синтаксис для преобразования lambda1
в эквивалент функционального указателя, чтобы его можно было передать в printOut
?
Кроме того, как насчет лямбд, которые на самом деле имеют что-то в скобках? Например:
int y = 5;
auto lambda2 = [y](void)->int{return y;};
Если лямбда такого типа не может быть преобразована в указатель на функцию, есть ли альтернативный способ передачи лямбда-выражения этого типа в printOut
(или даже в измененную версию printOut
, если так, каков синтаксис )