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;
}
相关文章
相关标签/搜索