打印笑脸胡子lambda表达式

Printing the smiley-with-beard lambda expression

本文关键字:lambda 表达式 笑脸 打印      更新时间:2023-10-16

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

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

但是它打印了

1

。如何?

正如你所链接到的问题的答案中所解释的,

<:]{%>

等价于

[]{}

不捕获任何内容的lambda表达式可隐式转换为函数指针。在此例中,该函数指针的签名为void(*)()

现在,函数指针隐式地转换为布尔值,该值始终是true,因此输出为1

你忘了把"& lt;:{%>。

你应该有:

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