Печать лямбда-выражения «смайлик с бородой»

Я пытался распечатать смайлик-с бородой лямбда-выражение

#include <iostream>

int main() {
std::cout << <:]{%>; // smile!
return 0;
}

но это напечатано

1

вместо. Как?

0

Решение

Как объяснено в ответы на вопрос, с которым вы связаны,

<:]{%>

эквивалентно

[]{}

Лямбда-выражение, которое ничего не захватывает, неявно преобразуется в указатель на функцию. В этом случае подпись этого указателя функции void(*)(),

Теперь указатель на функцию неявно преобразуется в логическое значение который всегда trueотсюда выводится распечатка 1,

5

Другие решения

Вы забыли положить «вокруг <:] {%>.

У тебя должно быть :

std::cout << "<:]{%>";
2

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector