• 忘掉天地
  • 仿佛也想不起自己
bingliaolongBingliaolong  2019-12-14 20:05 Aet 隐藏边栏 |   抢沙发  20 
文章评分 2 次,平均分 5.0

组块分隔符

C++14新增了用单引号表示的组块分隔符。
使用这种语法,可以提高代码的可读性。

二进制字面量

从C++14起,我们可以使用二进制字面量

auto用于推断函数

auto可以被使用来让编译器根据赋值给变量的初始值来推断变量的类型
从C++14起,auto也适用于函数。具体:使用auto让编译器根据函数返回的值来推断函数的返回类型。

参数数量可变的模板

参数可变的模板是C++14添加的功能。
可用于执行数学计算,也可用于完成某些简单的任务。
通过使用参数数量可变的模板,程序员可避免反复实现执行任务的各种重载版本,从而创建出更简短、更容易维护的代码。
具体用法是:在模板中使用省略号...来告诉编译器,默认类或模板函数可接受任意数量的模板参数,且这些参数可为任意类型。

operator""s

从C++14起,标准库支持将用引号括起来的字符串转换为std::basic_string<t>的operator""s.

解析:

str1中,由于字符串中间的空字符导致str1根本不包含单词initialization。
C++14的语法,能够让str2包含并操作含有空字符串的字符缓冲区。

泛型lambda表达式

C++14的泛型lambda表达式
将auto用于lambda参数的定义中。使用auto类型声明定义lambda参数和创建模板函数基本相当。
lambda会基于参数推导类型来进行特定的实例化
这一点,对于在不同上下文中重用的lambdas来说,是非常方便的一点。

constexpr

在C++11标准下,使用constexpr声明的函数可以在编译时执行,生成一个值,用在需要常量表达式的地方,比如作为初始化模板的整形参数。
C++11的constexpr函数只能包含一个表达式,C++14放宽了这些限制,支持诸如if、switch等条件语句,支持循环(包括范围for循环)。

使用STL位标志

在lambda表达式捕获列表中使用std::move()

C++14支持在捕获列表中使用std::move()

在构造函数中使用类型自动推断功能

C++14支持自动推断构造函数的模板参数类型

可以初始化的lambda捕获列表

在C++14标准中,我们不仅可以声明一个捕获变量,也可以对它初始化。

解析:

创建了x的引用r,对r的修改将影响到外面的x的值。同时在这个lambda函数域可见范围内新建了一个变量x,并且以外面的x增加1为初始值进行初始化。

[[deprecated]]属性

将[[deprecated]]标签放在声明前面
这些声明可以是一个类、变量、函数或其他东西。

当我们的程序使用了一个deprecated的实体,原本需要编译器做出反应,现在留给了代码实现者。
就是我们会收到某种警告,提示我们是否真的需要这么做。

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

bingliaolong
Bingliaolong 关注:0    粉丝:0 最后编辑于:2023-02-07
Everything will be better.

发表评论

表情 格式 链接 私密 签到
扫一扫二维码分享