我尝试打印smiley-with-beard lambda表达式
#include <iostream>
int main() {
std::cout << <:]{%>; // smile!
return 0;
}
但它打印
1
代替。怎么样?
答案 0 :(得分:5)
正如answers中对您所链接的问题的解释,
<:]{%>
相当于
[]{}
不捕获任何内容的lambda表达式可以隐式转换为函数指针。在这种情况下,此函数指针的签名为void(*)()
。
现在,函数指针为implicitly convertible to a boolean value,始终为true
,因此输出打印1
。
答案 1 :(得分:2)
你忘了把#34;周围&lt;:] {%&gt;。
你应该:
std::cout << "<:]{%>";