0

我尝试打印有胡子的笑脸lambda 表达式

#include <iostream>

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

但它打印了

1

反而。如何?

4

2 回答 2

5

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

<:]{%>

相当于

[]{}

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

现在,函数指针可以隐式转换为始终为 的布尔值true,因此输出为1

于 2015-10-06T18:47:51.980 回答
2

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

你应该有 :

std::cout << "<:]{%>";
于 2015-10-06T18:42:36.303 回答