Вы не можете использовать лямбда-выражение, кроме как путем фактического создания этого объекта, что делает невозможным переход к выводу типа, подобному decltype.
По иронии судьбы, правила лямбда-возврата делают так, что вы МОЖЕТЕ возвращать лямбда-выражения из лямбда-выражений, поскольку в некоторых ситуациях тип возвращаемого значения указывать необязательно.
У вас есть только два варианта - вернуть полиморфный контейнер, такой как std::function
, или сделать само F настоящей лямбдой.
auto F = [](int count) { return [](int m) { return 0; }; };