[]() -> void { puts("Lambda"); }(); // wrong
auto Print = []() -> void { puts("Lambda"); return 0; }(); // Good
вроде ж явно указываю тип возвращаемого значения....
Второй вариант не должен собираться, там же -> void
Да, не заметил
да, опечатался auto Print = []() { puts("Lambda"); return 0; }(); // Good
так и вопрос - почему первый вариант не рабочий?
https://t.me/supapro/908283 Ответь на вопрос)
Мне кажется, здесь вызов лямбды лишний. Или же лишняя переменная
не увидел вопрос сорри. я в принципе не хочу никакой переменной ничего присваивать ) - значит надо избавляться и от Print/ Хочу чтоб оно ( в данном примере) просто напечатало что-то.
[]{ puts("Lambda"); }();
Ну что по твоему является результатом выражения []() { puts("Lambda"); }() ?
ну это пример просто - так то я это использую как ускорялку, например : auto const fastIO = []() { std::ios_base::sync_with_stdio(false); std::cin.tie(nullptr); std::cout.tie(nullptr); return 0; }();
Это в глобальном скоупе что ли?)
результатом работы хочу видеть действие - которое в фигурных скобках.
Я не спросил что ты хочешь видеть Я спросил что является результатом выражения
Тогда ответ уже дали - если лямбда ничего не вернет, то и присваивать некуда. Поэтому приходится костылить с возвратом int. Вот был бы regular void..
auto Print = ([]{ puts("Lambda"); }(), 1); Но это явно не совсем желаемое решение
))) совсем не желаемое даже ) спасибо. вроде объяснили уже )
Обсуждают сегодня