Что обозначает код [_=&*+[]{}](){}()?

int main(void) { 
    [_=&*+[]{}](){}();
}

Как расшифровать этот код?


Ответы (1 шт):

Автор решения: KoVadim

Давайте перепишем это так

( // для красоты
    [
        _ = &*+[]{}
    ](){}
) // для красоты
(); // вызываем лямбду

Теперь все будет понятно, кроме содержимого квадратных скобок - _ = &*+[]{}. Этот синтаксис появился с 14 плюсов. Здесь подчеркивание - это имя переменной (как не удивительно). А справа от равно - функция. Плюсик делает с лямбды обычную функцию. Ну а звездочка и амперсанд взаимно уничтожаются. Неверится? Перепишите вот так

(
    [
        _ = &*+[]{}
    ](){std::cout << typeid(_).name();}
)
();

И в случае gcc увидите PFvvE, что значит void (*)()

Ну что, я взят?

→ Ссылка