4
([]() -> decltype(std::cout << "Hello") {
return std::cout << "Hello";
}()) << ", world!";
打印Hello, world!
。用decltype解釋此代碼
我根本不明白這裏發生了什麼。有人能用簡單的語言向我解釋嗎?
([]() -> decltype(std::cout << "Hello") {
return std::cout << "Hello";
}()) << ", world!";
打印Hello, world!
。用decltype解釋此代碼
我根本不明白這裏發生了什麼。有人能用簡單的語言向我解釋嗎?
([]() -> decltype(std::cout << "Hello")
此創建一個lambda(就地功能)與表達std::cout << "Hello"
具有相同的返回類型 - 這是std::ostream&
。所述[]
開始拉姆達,所述()
是一個空的參數列表中,->
preceeds返回類型,和decltype(X)
相當於表達式X的類型然後函數體:
{
return std::cout << "Hello";
}
然後調用該函數時......輸出「你好」,並返回流....
())
最後,返回的數據流,多了幾分文本發送...
<< ", world!";
這是一個定義並立即執行的lambda函數。閱讀關於這些東西。 –
順便說一句,這相當於'[] {return std :: cout <<「Hello」;}()<<「,world!」;'。 – chris
首先,他們用這些怪物毀了我心愛的可讀Python語言,現在他們已經完成了C++。如果ISO bods有機會把它們放在頭上對C做同樣的事情,我會追蹤它們並用溼芹菜棒毆打他們(以延長痛苦):-) – paxdiablo