打印带胡子的笑脸 lambda 表达式
Printing the smiley-with-beard lambda expression
我尝试打印 smiley-with-beard lambda 表达式
#include <iostream>
int main() {
std::cout << <:]{%>; // smile!
return 0;
}
但是它打印了
1
相反。怎么样?
您忘记在 <:]{%> 周围加上 "。
你应该有:
std::cout << "<:]{%>";
如您所链接问题的 answers 中所述,
<:]{%>
等同于
[]{}
不捕获任何内容的 lambda 表达式可隐式转换为函数指针。在这种情况下,这个函数指针的签名是void(*)()
。
现在,函数指针是 implicitly convertible to a boolean value,它总是 true
,因此输出打印 1
.
我尝试打印 smiley-with-beard lambda 表达式
#include <iostream>
int main() {
std::cout << <:]{%>; // smile!
return 0;
}
但是它打印了
1
相反。怎么样?
您忘记在 <:]{%> 周围加上 "。
你应该有:
std::cout << "<:]{%>";
如您所链接问题的 answers 中所述,
<:]{%>
等同于
[]{}
不捕获任何内容的 lambda 表达式可隐式转换为函数指针。在这种情况下,这个函数指针的签名是void(*)()
。
现在,函数指针是 implicitly convertible to a boolean value,它总是 true
,因此输出打印 1
.