码迷,mamicode.com
首页 > 编程语言 > 详细

C++ 14新特性

时间:2017-10-31 19:58:57      阅读:211      评论:0      收藏:0      [点我收藏+]

标签:函数参数   tps   name   baidu   struct   需要   参考   lambda   常量   

参考链接: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: "
            << 0b1000000110000000
            << "\n";
  std::cout << "Proposed salary: $"
            << 300000.00
            << "\n";
  return 0;
}

 

 

C++ 14新特性

标签:函数参数   tps   name   baidu   struct   需要   参考   lambda   常量   

原文地址:http://www.cnblogs.com/zengyou/p/7762835.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!