странную запись int a = [] {return 1; } (); по сути результат работы равен записи int a = 1; но тут запись почти как в лямбде (если удалить () или добавить туда параметр то компилятор начнет жаловаться что я в инт лямбду пихаю) если убрать return то он будет присваивать *void что за странный синтаксис который и и не лямбда и имеет похожую запись ?
Это лямбда, которая сразу же вызывается
int x=2; int a = [=]() {return x; } (); с ума сойти... и это работает...
и это очень полезно, когда надо сложный инициализатор переменной записать, а statement expression не завезли
А в чем проблема? x захаатывается в лямбду по значению, а затем возвращается оттуда Лямбда сразу же вызывается
Обсуждают сегодня