參考鏈接:http://blog.jobbole.com/79228/
1 返回類型推導
在C++11中, lambda函數參數需要被聲明為具體的類型。C++14放寬了這一要求,允許lambda函數參數類型使用類型說明符auto。
在C++11中, lambda函數參數需要被聲明為具體的類型。C++14放寬了這一要求,允許lambda函數參數類型使用類型說明符auto。
代碼簡潔,並且可以增強重構。
實際使用模板參數
auto lambda = [] (auto x, auto y) {return (x + y); } //等同於 struct unnamed_lambda { template <typename T,typename U> auto operator()(T x, U y) const { return (x+y); } }; auto lambda = unnamed_lambda();
如果一個函數有多個返回路徑,那么每個返回路徑返回的值需要具有相同的類型。
auto f(int i) { if ( i < 0 ) return -1; else return 2.0 //編譯會報錯 }
2
可初始化的Lambda捕獲
Lambda中捕獲可以實現初始化,用逗號隔開,從左往右運行
auto y = [&r = x, x = x+1]()->int {...}
3
[[deprecated]]屬性
[[deprecated]]標簽放到聲明的前面即可—可以是類,變量,函數,或者其他一些實體的聲明,被放在class,enum等關鍵字之后,實體名之前。
標記過時的定義,不建議使用
class [[deprecated]] flaky { }; [[deprecated("Consider using something other than cranky")]] int cranky() { return 0; } int main() { flaky f; return cranky(); }
其他
二進制常量以前綴0b(或0B)開頭,二進制數字緊隨其后。
單引號字符作為數字分隔符,一百萬可以是:1’000’000.00 或者 1’0’00’0’00.00
#include <iostream> int main() { int val = 0b11110000; std::cout << "Output mask: " << 0b1000'0001'1000'0000 << "\n"; std::cout << "Proposed salary: $" << 300'000.00 << "\n"; return 0; }