Я пытался распечатать смайлик-с бородой лямбда-выражение
#include <iostream>
int main() {
std::cout << <:]{%>; // smile!
return 0;
}
но это напечатано
1
вместо. Как?
Как объяснено в ответы на вопрос, с которым вы связаны,
<:]{%>
эквивалентно
[]{}
Лямбда-выражение, которое ничего не захватывает, неявно преобразуется в указатель на функцию. В этом случае подпись этого указателя функции void(*)()
,
Теперь указатель на функцию неявно преобразуется в логическое значение который всегда true
отсюда выводится распечатка 1
,
Вы забыли положить «вокруг <:] {%>.
У тебя должно быть :
std::cout << "<:]{%>";