0
我試圖打印smiley-with-beard lambda表達式打印笑臉與 - 鬍鬚lambda表達式
#include <iostream>
int main() {
std::cout << <:]{%>; // smile!
return 0;
}
但印刷
1
代替。怎麼樣?
我試圖打印smiley-with-beard lambda表達式打印笑臉與 - 鬍鬚lambda表達式
#include <iostream>
int main() {
std::cout << <:]{%>; // smile!
return 0;
}
但印刷
1
代替。怎麼樣?
正如answers給你鏈接到這個問題解釋說,
<:]{%>
相當於
[]{}
不捕獲任何內容的lambda表達式可隱式轉換爲函數指針。在這種情況下,該函數指針的簽名是void(*)()
。
現在,函數指針是implicitly convertible to a boolean value這總是true
,因此輸出打印1
。
你忘了把「圍繞<:] {%>
你應該有:
std::cout << "<:]{%>";
把<:]{%>放在引號內,如「<:]{%>」 –
可能它會觸發一個隱式轉換爲非空指針的函數,並打印爲布爾值 –