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();

若是一個函數有多個返回路徑,那麼每一個返回路徑返回的值須要具備相同的類型。ios

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();
}

其餘ide

二進制常量之前綴0b(或0B)開頭,二進制數字緊隨其後。函數

單引號字符做爲數字分隔符,一百萬能夠是:1’000’000.00 或者 1’0’00’0’00.00spa

#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;
}
相關文章
相關標籤/搜索