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

247
25 мая 2022, 02:00
int main(void) { 
    [_=&*+[]{}](){}();
}

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

Answer 1

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

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

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

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

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

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

READ ALSO
C++ CLI - ссылка на неразрешенную лексему

C++ CLI - ссылка на неразрешенную лексему

Данный код не выполняется в проекте:

147
Ошибка в простейшем алгоритме

Ошибка в простейшем алгоритме

Нужно обнулить последние биты даного числа n0<=n<=2^31

163
Перебор между собой всех строк матрицы

Перебор между собой всех строк матрицы

У меня вот такая вот задача:

171
Категория Wordpress ведет на 404-ю страницу

Категория Wordpress ведет на 404-ю страницу

Создаю custom post type в wordpress и категории для него:

173