打印笑脸胡须lambda表情

时间:2015-10-06 18:38:19

标签: c++ c++11 lambda digraphs

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

#include <iostream>

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

但它打印

1

代替。怎么样?

2 个答案:

答案 0 :(得分:5)

正如answers中对您所链接的问题的解释,

<:]{%>

相当于

[]{}

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

现在,函数指针为implicitly convertible to a boolean value,始终为true,因此输出打印1

答案 1 :(得分:2)

你忘了把#34;周围&lt;:] {%&gt;。

你应该:

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