我是靠谱客的博主 愉快雪碧,最近开发中收集的这篇文章主要介绍c++语言标准 pdf,C++14标准.pdf,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(35)

评论列表共有 0 条评论

立即
投稿
返回
顶部