概述
C14标准
C++11标准
I
一、目录
一、目录I
二、新的语言特性1
1、 泛型的Lambda函数1
2、 Lambda捕获表达式1
3、 函数返回类型推导2
4、 另一种类型推断2
5、 放松的constexpr限 3
6、 变量模板3
7、 聚合体成员初始化4
8、 二进制字面值4
9、 数字分位符4
三、新的标准库特性4
1、 共享的互斥体和锁4
2、 元函数的别名4
3、 关联容器中的异构查找5
4、 标准自定义字面值5
5、 通过类型寻址多元组6
6、较小的标准库特性6
四、 已被移除或是不包含在C++14标准的特性6
1、 关于数组的扩展6
2、 Optional值7
3、 ConceptsLite7
I
二、新的语言特性
1、泛型的Lambda函数
在C++11中,lambda函数的形式参数需要被声明为具体的类型。C++14放宽了这一要
求,允许lambda函数的形式参数声明中使用类型说明符auto。
autolambda=[](autox,autoy) {returnx+y;}
泛型lambda函数遵循模板参数推导的规则。以上代码的作用与下面的代码相同:
structunnamed_lambda
{
template
autooperator()(Tx,Uy)const {returnx+y;}
};
autolambda=unnamed_lambda();
2、Lambda捕获表达式
C++11的lambda函数通过值拷贝(bycopy)或引用(byreference)捕获(capture)已
在外层作用域声明的变量。这意味着lambda 的值成员不可以是move-only 的类型。C++14
允许被捕获的成员用任意的表达式初始化。这既允许了capturebyvalue-move,也允许了任
意声明lambda 的成员,而不需要外层作用域有一个具有相应名字的变量。
这是通过使用一个初始化表达式完成的:
autolambda=[value= 1]{returnvalue;}
lambda函数lambda 的返回值是1,说明value被初始化为 1。被声明的捕获变量的类型
会根据初始化表达式推断,推断方式与用auto声明变量相同。
使用标准函数std::move可以使之被用以通过move捕获:
autoptr=std::make_unique(10);//Seebelowforstd::make_unique
autolambda=[ptr=std::move(ptr)] {return*ptr;}
声明ptr=std::move(ptr)使用了两次ptr。第一次使用声明了一个新的变量,但在捕获部
分,这个变量还不在作用域内。所以第二个ptr表示之前在lambda之外声明的变量。
1 9
第 页 共 页
3、函数返回类型推导
C++11允许lambda 函数根据return语句的表达式类型推断返回类型。C++14为一般的
函数也提供了这个能力。C++14还拓展了原有的规则,使得函数体并不是{returnexpression;}
形式的函数也可以使用返回类型推导。
为了启用返回类型推导,函数声明必须将auto作为返回类型,但没有C++11的后置返
回类型说明符:
autoDeduceReturnType(); //返回类型由编译器推
最后
以上就是愉快雪碧为你收集整理的c++语言标准 pdf,C++14标准.pdf的全部内容,希望文章能够帮你解决c++语言标准 pdf,C++14标准.pdf所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复