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的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: max7219c语言,(转)MAX721
- 下一篇: c语言中二维数组怎么,c语言中什么是二维