Функция, возвращающая лямбда-выражение

Интересно, можно ли написать функцию, возвращающую лямбда-функцию, в C ++ 11. Конечно, одна проблема - как объявить такую ​​функцию. У каждой лямбды есть тип, но этот тип не может быть выражен в C ++. Я не думаю, что это сработает:

auto retFun() -> decltype ([](int x) -> int)
{
    return [](int x) { return x; }
}

И это:

int(int) retFun();

Мне не известны какие-либо автоматические преобразования лямбда-выражений, скажем, в указатели на функции или что-то подобное. Единственное решение - создать объект функции вручную и вернуть его?

85
задан jotik 29 June 2016 в 10:15
поделиться