Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我尝试打印有胡子的笑脸lambda 表达式
#include <iostream> int main() { std::cout << <:]{%>; // smile! return 0; }
但它打印了
1
反而。如何?
正如您所链接的问题的答案中所解释的,
<:]{%>
相当于
[]{}
不捕获任何内容的 lambda 表达式可以隐式转换为函数指针。在这种情况下,此函数指针的签名是void(*)()。
void(*)()
现在,函数指针可以隐式转换为始终为 的布尔值true,因此输出为1。
true
您忘记在 <:]{%> 周围加上 "。
你应该有 :
std::cout << "<:]{%>";