2015-10-06 32 views
0

我試圖打印smiley-with-beard lambda表達式打印笑臉與 - 鬍鬚lambda表達式

#include <iostream> 

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

但印刷

1 

代替。怎麼樣?

+1

把<:]{%>放在引號內,如「<:]{%>」 –

+2

可能它會觸發一個隱式轉換爲非空指針的函數,並打印爲布爾值 –

回答

5

正如answers給你鏈接到這個問題解釋說,

<:]{%> 

相當於

[]{} 

不捕獲任何內容的lambda表達式可隱式轉換爲函數指針。在這種情況下,該函數指針的簽名是void(*)()

現在,函數指針是implicitly convertible to a boolean value這總是true,因此輸出打印1

2

你忘了把「圍繞<:] {%>

你應該有:

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