Мы можем создать лямбду так:
auto x = [](){};
Я могу создать его копию в куче следующим образом:
auto y = new decltype(x)(x);
Вопрос в том, можно ли это сделать за один шаг? Создание лямбды в куче без лишних шагов?
@SHR Тип лямбда безымянный: «Лямбда-выражение является выражением prvalue уникального безымянного неагрегатного типа класса, не являющегося объединением». Его «реальный тип» - это обычно какое-то бессмысленное имя, созданное компилятором, но это вам не поможет, потому что вы все равно не можете напрямую назвать его.
ответ показывает, что это возможно, но реальный вопрос в том, что; ЗАЧЕМ?





Вы можете использовать auto в новом выражении:
new auto ([](){});
Более интересный вопрос - можно ли создать общую лямбду с помощью make_shared? ;)
да, вот пример make_unique: wandbox.org/permlink/pR7FWQfo0SSHAKhH
@MarekR, это не совсем лямбда в куче. Вы создаете unique_ptr как std::function, который инициализируется с помощью лямбда, а не unique_ptr для лямбда.
@DanM. wandbox.org/permlink/RFX021jIRf7vBFzh
Я думаю, что вопрос должен заключаться в следующем: что такое настоящий тип лямбды? поскольку
autoпросто скрывает имя типа.