Just a little smile ^ ^

yoyo_zeng

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
参考链接: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;
}

 

 

posted on 2017-10-31 18:03  yoyo_zeng  阅读(5728)  评论(0编辑  收藏  举报