Извините, это длинный вопрос, но позвольте мне сломать его:
Стандарт С++ гарантирует, что:
void (*Ptr)(void) = [] {};
return Ptr;
все еще будет определено поведение?
Я понимаю, что для закрытия он будет определен, потому что этот объект закрытия перемещается/копируется по значению; но, хотя я знаю, что "регулярная" функция имеет бесконечное/нет времени жизни, имеет ли цель Ptr то же самое? Или он разрушен и воссоздан с каждым экземпляром лямбда?
По этой причине я не могу использовать lambdas как обратные вызовы, если нет. Я хочу знать.