打印带胡子的笑脸 lambda 表达式

Printing the smiley-with-beard lambda expression

我尝试打印 smiley-with-beard lambda 表达式

#include <iostream>

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

但是它打印了

1

相反。怎么样?

您忘记在 <:]{%> 周围加上 "。

你应该有:

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

如您所链接问题的 answers 中所述,

<:]{%>

等同于

[]{}

不捕获任何内容的 lambda 表达式可隐式转换为函数指针。在这种情况下,这个函数指针的签名是void(*)()

现在,函数指针是 implicitly convertible to a boolean value,它总是 true,因此输出打印 1.