C++ 14新特性


參考鏈接:http://blog.jobbole.com/79228/
 
1  返回類型推導
在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  //編譯會報錯
}

 

 
可初始化的Lambda捕獲
Lambda中捕獲可以實現初始化,用逗號隔開,從左往右運行
auto y = [&r = x, x = x+1]()->int {...}
 
[[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;
}

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM