C++11包括大量的新特性,C++11标准为C++编程语言的

作者: 编程  发布:2019-09-26

1、什么是C+11

C++11正式为C++编制程序语言的第多个合法正式,正式名字为ISO/IEC 14882:二〇一三 - Information technology -- Programming languages -- C++。在标准规范公告前,原名C++0x。它将替代它C++规范第二版ISO/IEC 14882:二零零二 - Programming languages -- C++成为C++语言新职业。

C++11是对近日C++语言的恢弘和改正, C++11不止蕴涵宗旨语言的新机能,何况扩充了C++的正儿八经程序库 ,并入了许多的C++ Technical Report 1 程序库(数学的分裂常常函数除了这么些之外)。

C++11包涵大气的新特点:包涵lambda表明式,类型推导关键字auto、 decltype,和模板的大方考订。

3、C++11博文参谋

01、类型推导
02、初始化
03、基于范围的for循环、静态断言
04、noexcept修饰符、nullptr、原生字符串字面值

05、强类型枚举
 
06、常量表达式
07、用户定义字面量
08、强类型枚举
09、类的改进
10、defaulted 和 deleted 函数
 

11、模板的改进
12、可变参数的模板
13、右值引用
14、移动语义
15、std::move和std::forward
 
16、智能指针
17、闭包(closure)
18、std::function
19、std::bind
20、lambda表达式
 
21、线程
22、互斥量
 

1、什么是C+11 C++11行业内部为C++编制程序语言的第多少个官方正式,正式名称叫ISO/IEC 14882:2013 - Information technology -- Progra...

本子更换

编辑

1.对C++宗旨语言的恢弘

2.宗旨言语运营期的加重(右值援用和 move 语义;泛化的常数表明式;对POD定义的匡正)

3.大旨言语创建期表现的拉长(外界模板)

4.宗旨语言使用性的加强(开始化列表;统一的起首化;类型推导[auto关键字];以限制为底蕴的 for 循环;拉姆da函数与表示法;另一种的函数语法;对象营造的修正;显式虚函数重载;空指针;强类型枚举;角括号;显式类型调换;模板的小名;无界定的unions)

5.宗旨语言技术的晋升(变长参数模板;新的字符串字面值;客商自定义的字面值;多职分存款和储蓄器模型;thread-local的累积期限;使用或剥夺对象的默许函数;long long int 类型;静态assertion;允许sizeof运算符功能在项指标多寡成员上,没有要求鲜明的靶子;)

6.C++标准程序库的更改(标准库组件的提拔;线程帮助;多元组类型;散列表;正则表明式;通用智能指针;可扩充的人身自由数作用;包装援引;多态函数目的包装器;用于元编制程序的项目属性;用于总括函数对象回来类型的统一方法)

前途迈入

*2014 C++14 (2014 final draft )
C++规范的下四个小修订

1.新语言特征:变量模板(variable templates)、多态λ(polymorphic lambdas)、λ动捕获(move capture for lambdas)、new/delete elision、常量表明式函数放宽限制(relax restrictions on constexpr functions)、二值文本(binary literals)、数字分隔符(digit separators)、函数再次来到类型推演(return type deduction for functions)、用大括号或等号早先符聚积起先化类
2.新库特征:std::make_unique、std::shared_mutex和std::shared_lock、 std::index_sequence、std::exchange、std::quoted,还会有为数十分多针对性现存库的小立异,比方部分算法的双距离重载 (two-range overloads for some algorithms)、类型特征的门类外号版本(type alias versions of type traits)、客商定义字符串(user-defined string)、持续期(duration)和复杂数字文本(complex number literals)等等
3.搜罗错误报告修复:149号库(149 library issues)
基础库手艺标准(Library fundamentals TS), 文件系统技术职业(Filesystem TS)和其余规范手艺标准( experimental technical specifications)

•2017 C++17
C++规范的下贰个重大修订

3、C++11博文参照他事他说加以考察

01、类型推导02、初叶化03、基于范围的for循环、静态断言04、noexcept修饰符、nullptr、原生字符串字面值05、强类型枚举06、常量表达式07、客户定义字面量08、强类型枚举09、类的校勘10、defaulted 和 deleted 函数11、模板的精雕细琢12、可变参数的沙盘13、右值援引14、移动语义15、std::move和std::forward16、智能指针17、闭包18、std::function19、std::bind20、lambda表明式21、线程22、互斥量

1、什么是C+11

C++11职业为C++编制程序语言的第多少个法定正式,正式名字为ISO/IEC 14882:二零一一 - Information technology -- Programming languages -- C++。在正规标准公告前,原名C++0x。它将顶替C++标准第二版ISO/IEC 14882:2001 - Programming languages -- C++成为C++语言新标准。

C++11是对当下C++语言的扩充和校订, C++11不但含有主旨语言的新机能,何况扩充了C++的规范程序库(STL) ,并入了相当多的C++ Technical Report 1(TLAND1) 程序库(数学的特种函数除此而外)。

C++11囊括大气的新特点:满含lambda表明式,类型推导关键字auto、 decltype,和模板的大方更进一步。  

C++11标准是 ISO/IEC 14882:2011 - Information technology -- Programming languages -- C++ 的简称[1]  。

C++历史

2、C++11新特点学习录制

C++11新特征学习,11新特征学习

出版时间
2011年9月

标准C++

•一九八九 ANSI C++委员会建设构造(ANSI C++ Committee founded)

•1994 ISO C++委员会创设(ISO C++ Committee founded)

•1998 C++98(ISO/IEC14882:1998)

1.新特点:运维时类型新闻[RTTI(dynamic_cast, typeid)]、协变重回类型(covariant return types)、cast 操作符、可转移、布尔型、申明意况、模板例示、成员模板、导出
2.新库:容器、算法、迭代器、函数对象(STL中)、区域设置、位集结、值向量、自动指针(auto_ptr)、模块化字符串、输入输出流和复数

•一九九九 《C++编制程序语言第三版》(The C++ Programming Language, 3rd edition)

•一九九六Boost由委员会成员成立,意在开垦新的高水平库以作为标准库的候选库(Boost founded by the committee members to produce new high-quality candidate libraries for the standard)

•2003 C++03 (ISO/IEC 14882:2003)
那是多少个协助修订版本,勘误了部分荒谬。

1.新特征:伊始化值
访谈错误报告修复:1贰十七个,包蕴69号错误,该错误总是生成std::vector

•二〇〇七 质量能力报告[Performance TCRUISER (ISO/IEC T帕杰罗 18015:2005) (ISO Store ) (2005 draft )]

•二〇〇五 二〇〇六扩充库第一报告[二零零六 Library extension T安德拉1 (ISO/IEC TQX56一九八〇8:2006) (ISO store ) (2007 draft )]
本条技能报告是C++库扩充,参与了以下内容:

1.源自Boost:引用包装器(Reference wrapper)、智能指针(斯马特pointers)、成员函数(Member function)、Result of 、绑定(Binding)、函数(Function)、类型特征(type traits)、随机(Random)、数学特殊函数(Mathematical SpecialFunctions)、元组(Tuple)、数组(Array)、严节容器[Unordered Containers包涵哈希(Hash)]还会有正则表明式(Regular Expressions)
2.源自C99:math.h中何况也是新加盟C99的数学函数、空白字符类、浮点意况(Floating-point environment)、十六进制浮点I/O操作符(hexfloat I/O Manipulator)、固定大小整数类型(fixed-size integral types)、长整型(the long long type)、va_copy、snprintf() 和vscanf()函数族,还或许有C99 的printf()与scanf()函数族的钦赐转变
TENCORE1除了一些出奇函数,大部分都被回顾进C++11。

•贰零壹零 数学特殊函数技巧报告[2009 Mathematical special functions TCRUISER(ISO/IEC 29124:二〇一〇) (ISO Store ) (二〇〇八 draft )]
此TENVISION是三个C++标准库增添,插足了T兰德奔驰M级第11中学的部分特殊函数,但这三个函数以前并未有被总结进C++11:椭圆积分、指数积分、拉Gail多项式 (Laguerre polynomials)、勒让徳多项式(Legendre polynomials)、Ayr米特多项式(Hermite polynomials)、贝塞尔(贝丝el)函数、Newman(Newmann)函数、β函数和黎曼(Riemann)ζ函数

•2011 C++11 (ISO/IEC 14882:2011) (ISO Store) (ANSI Store ) (Post-publication draft )
对C++程序猿,在存活常规标准化和抽象概念升高方面有大气的转移可用。

1.新语言特征:自动(auto)和品种获取(decltype)、暗许和已去除函数(defaulted and deleted functions)、不可更换(final)和重载(override)、拖尾再次回到类型(trailing return type)、右值引用(rvalue references)、移动构造函数(move constructors)/移动赋值(move assignment)、功效域枚举(scoped enums)、常量表达式(constexpr)和文字类型(literal types)、列表初阶化(list initialization)、授权(delegating)和一而再构造器(inherited constructors)、大括号或等号(brace-or-equal)起先化器、空指针(nullptr)、长整型(long long)、char16_t和char32_t、类型小名(type aliases)、可变参数模板(variadic templates)、广义联合体(generalized unions)、广义POD、Unicode字符串文字(Unicode string literals)、自定义文字(user-defined literals)、属性(attributes)、λ表明式(lambda expressions)、无充裕(noexcept)、对齐查询(alignof)和对齐钦定(alignas)、多线程内部存款和储蓄器模型 (multithreaded memory model)、线程本地存款和储蓄(thread-local storage)、GC接口(GC interface)、range for(based on a Boost library)、静态断言[static assertions(based on a Boost library)]
2.新库特色:原子操作库(atomic operations library)、emplace()和贯通整个现成库的右值援引的应用、std::initializer_list、状态性的和成效域内的分配器 (stateful and scoped allocators)、前向列表(forward_list)、计时库(chrono library)、分数库(ratio library)、新算法(new algorithms)、Unicode conversion facets
3.源自TCRUISER1:除了非常的函数,TKoleos第11中学一切都被归纳进来
4.源自Boost:线程库(The thread library)、万分指针(exception_ptr)、错误码(error_code)和错误意况(error_condition)、迭代器立异[iterator improvements(std::begin, std::end, std::next, std::prev)]
5.源自C:C风格的Unicode转变函数
6.收罗错误报告修复:3陆拾八个谬误在二零一零草案中被消除,别的有3二十二个错误接着被修复。在那之中的荒谬富含530号,它使得std::basic_string对象相连。

•2013 十进制浮点工夫报告[Decimal floating-point TPRADO (ISO/IEC T中华V24733:二〇一三) (ISO Store ) (二零零六 draft )]
那几个T传祺依照IEEE 754-2010浮点算数标准(Floating Point Arithmetic):std::decimal::decimal32、std::decimal::decimal64、std::decimal::decimal128

•二〇一二 标准C++基金会创设(The Standard C++ Foundation founded )

•2011 《C++编制程序语言第四版》The C++ Programming Language, 4th edition


2、C++11新特色学习摄像

https://pan.baidu.com/s/1eRHTS1W

中文名
C++11

早期C++

•1978: 第一回完成引进类的C(C with Classes first implemented)

1.新特色:类、成员函数、承继类、独立编写翻译、公共和个体访谈调整、友元、函数参数类型检查、暗中同意参数、内联函数、赋值符号重载、构造函数、析构函数、f()也就是f(void)、调用函数和重返函数(同步机制,不是在C++中)
2.库:并发职务程序库(不是在C++中)

•一九八四: 发表引进类的C之参谋手册(C with Classes reference manual published)

•一九八二: C84的兑现,参谋手册宣布(C84 implemented, reference manual published)

•1985: Cfront 1.0

1.新特征:虚函数、函数和操作符重载、引用、new和delete操作符、const关键词、范围分析运算符::
2.新参与的库:复数(complex)、字符串(string)、输入输出流(iostream)

•1983: 《C++编程语言第一版》(The C++ Programming Language, 1st edition)

•1989: Cfront 2.0

1.新特点:多种承接、成员指针、珍重访问调节、类型安全连着、抽象类、静态和常量成员函数、特定类的new和delete
2.新库:I/O 操作器

•一九八七: 《C++参谋手册表明》(The Annotated C++ Reference 马努al)
此书从企图范围陈说了该语言,蕴涵部分还从未兑现的表征,在ISO规范在此以前它成为实际的正规。

1.新特色:命名空间、非凡捕获、内部类

•1991: Cfront 3.0

•一九九一: 《C++编制程序语言第二版》(The C++ Programming Language, 2nd edition)


发表时间
2011年8月12日

简介

编辑

C++11标准为C++编制程序语言的第多少个官方正规,正式名称叫ISO/IEC 14882:2012 - Information technology -- Programming languages -- C++ 。[1]  在正式标准宣布前,原名C++0x。它将代表C++标准第二版ISO/IEC 14882:2000 - Programming languages -- C++ 成为C++语言新规范。

C++11包蕴了骨干语言的新机能,並且开展C++标准程序库,并且插手了绝大好多的C++ Technical Report 1程序库(数学上的异样函数除此之外)。C++ 标准委员会安顿在二〇一〇年三月事先完结对最终委员会草案的投票,以及于二〇一二年十一月3进行的正儿八经会议产生国际标准的尾声草案。最后于二零一三年十一月三二十二十六日发表,并于2011年十一月出版。二零一二年四月26日的国际标准草案(N3376)是最相仿于现行反革命规范的草案(编辑上的匡正)。此番正式为13年第三遍重要改进。

ISO将要二零一五年和前年发表C++的持续版本[3]  。

图片 1C++语言的规格进度

标准版本
C++典型第三版

标准文件号
ISO/IEC 14882:2011

现状

编辑

种种专门的学问的揭露都急需一段时间的推广。包含能力书籍,编写翻译器帮助。C++11行业内部公布后,U.S.A.现已更新了绝大多数老牌C++图书,以支撑新型的C++11正式,比如:《C++ Primer (Fifth Edition)》、《C++ Primer Plus (Sixth 艾德ition)》、《The C++ Programming Language (4th Edition)》等等。这几本书都已经有了华语翻译版,分小名称为《C++ Primer 汉语版(第五版)》、《C++ Primer Plus 中文版(第六版)》、《C++程序设计语言(第四版)》。各大主流编写翻译器产商也日渐加多了对C++11语法的支撑,举例VS贰零壹叁、g++、clang等都在非常的大程度上协理C++11标准。图为迄今帮助景况。

图片 2编写翻译器落成情形

出现技能

编辑

C++11 Core Language Features: Concurrency
Visual Studio 2010
Visual Studio 2012
Visual Studio 2013
Reworded sequence points
N/A
N/A
N/A
Atomics
No
Yes
Yes
Strong compare and exchange
No
Yes
Yes
Bidirectional fences
No
Yes
Yes
Memory model
N/A
N/A
N/A
Data-dependency ordering
No
Yes
Yes
Data-dependency ordering: function annotation
No
No
No
exception_ptr
Yes
Yes
Yes
quick_exit
No
No
No
Atomics in signal handlers
No
No
No
Thread-local storage
Partial
Partial
Partial
Magic statics
No
No
No

VS C++11意义协助表(总表)

编辑

以下是Microsoft Visual Studio 二〇〇九,2011,二〇一二对C++11支撑的可比[7]  。

C++11 Core Language Features
Visual Studio 2010
Visual Studio 2012
Visual Studio 2013
Rvalue referencesv0.1,v1.0,v2.0,v2.1,v3.0
v2.0
v2.1*
v2.1*
ref-qualifiers
No
No
No
Non-static data member initializers
No
No
Yes
Variadic templatesv0.9,v1.0
No
No
Yes
Initializer lists
No
No
Yes
static_assert
Yes
Yes
Yes
autov0.9,v1.0
v1.0
v1.0
v1.0
Trailing return types
Yes
Yes
Yes
Lambdasv0.9,v1.0,v1.1
v1.0
v1.1
v1.1
decltypev1.0,v1.1
v1.0
v1.1**
v1.1
Right angle brackets
Yes
Yes
Yes
Default template arguments for function templates
No
No
Yes
Expression SFINAE
No
No
No
Alias templates
No
No
Yes
Extern templates
Yes
Yes
Yes
Yes
Yes
Yes
Strongly typed enums
Partial
Yes
Yes
Forward declared enums
No
Yes
Yes
No
No
No
constexpr
No
No
No
TR1
Partial
Partial
Delegating constructors
No
No
Yes
Inheriting constructors
No
No
No
Explicit conversion operators
No
No
Yes
char16_t/char32_t
No
No
No
Unicode string literals
No
No
No
Raw string literals
No
No
Yes
Universal character names in literals
No
No
No
User-defined literals
No
No
No
Standard-layout and trivial types
No
Yes
Yes
Defaulted and deleted functions
No
No
Yes*
Extended friend declarations
Yes
Yes
Yes
Extended sizeof
No
No
No
Inline namespaces
No
No
No
Unrestricted unions
No
No
No
Local and unnamed types as template arguments
Yes
Yes
Yes
Range-based for-loop
No
Yes
Yes
override and finalv0.8,v0.9,v1.0
Partial
Yes
Yes
Minimal GC support
Yes
Yes
Yes
noexcept
No
No
No

外界模板

在正规C++中,只要在编写翻译单元内蒙受被完好定义的模版,编写翻译器都不能不将其实例化(instantiate)。那会大大扩张编写翻译时间,非常是模板在广大编写翻译单元Nelly用同样的参数实例化。看起来未有章程告诉C++不要引发模板的实例化。

C++11将会引进外界模板这一定义。C++已经有了挟持编写翻译器在一定岗位上马实例化的语法:

template class std::vector<MyClass>;

而C++所贫乏的是阻挠编写翻译器在某些编写翻译单元内实例化模板的技能。C++11将轻松地扩充前文语法如下:

extern template class std::vector<MyClass>;

那般就报告编写翻译器不要在该编写翻译单元内将该模板实例化。

以限制为根基的for循环

Boost C++ 定义了累累"范围 (range) "的定义。范围表现就像是受调节的串行 (list),持有容器中的两点。有序容器是限制概念的超集 (superset),有序容器中的七个迭代器 (iterator) 也能定义贰个范围。这几个概念以及操作的算法,将被合併 C++11 规范程序库。可是 C++11 将会以语言档案的次序的协助来提供范围概念的机能。

for 语句将允许轻松的范围迭代:第4盘部概念被用来做限定迭代的变量,就像是被声称在一般for循环的变量一样,其成效域仅只于循环的限量。而在":"之后的第二区块,代表将被迭代的限定。那样一来,就有了可以允许C-style数组被调换来范围概念的概念图。那足以是std::vector,或是其余符合范围概念的靶子。

1
2
3
4
5
int my_array[5]={1, 2, 3, 4, 5};
for(int& x : my_array)
{
x *= 2;
}
编译器支持
  
功能
  
VS2011
  
VS2013 g++ 4.7
  
Clang 3.1
  
auto关键字
  
Yes
  
Yes
  
Yes Yes
decltype关键字 Yes
  
Yes
  
Yes Yes
右值引用(Rvalue references)与移动语义(move semantics) Yes
  
Yes
  
Yes Yes
Lambda表达式
  
Yes
  
Yes
  
Yes Yes
nullptr关键字 Yes
  
Yes
  
Yes Yes
静态断言(static_assert)关键字[4]  
  
Yes
  
Yes
  
Yes Yes
基于范围的循环(Range based for loop)语法[5]  Yes
  
Yes
  
Yes Yes
函数返回类型后置(Trailing return type in functions)语法 Yes
  
Yes
  
Yes Yes
final关键字 Yes
  
Yes
  
Yes Yes
override关键字 Yes
  
Yes
  
Yes Yes
强类型枚举(Strongly typed enums) Yes
  
Yes
  
Yes Yes
前置枚举声明(Forward declared enums)
  
Yes
  
Yes
  
Yes Yes
外部模板(extern templates) Yes
  
Yes
  
Yes Yes
模板右尖括号嵌套(>> for nested templates) Yes
  
Yes
  
Yes Yes
Local and unnamed types as template arguments Yes
  
Yes
  
Yes Yes
变参宏(Variadic macros) Yes
  
Yes
  
Yes Yes
新内建类型(New built-in types) Partial(部分) ? Yes Yes
Initializer_lists容器 No ? Yes Yes
显式类型转换运算符(explicit type conversion operators) No Yes
  
Yes Yes
内联命名空间(Inline namespaces) No ? Yes Yes
sizeof用在没实例时的非静态成员
(sizeof on non-static data members without an instance)
No ? Yes Yes
改变union成员限制(Changed restrictions on union members) No ? Yes Yes
Raw string literals
  
No Yes Yes Yes
User defined literals
  
No ? Yes Yes
Encoding support in literals
  
No ? Yes Yes
Arbitrary expressions in template deduction contexts
  
No ? Yes Yes
默认方法(Defaulted methods)
  
No Yes(有条件支持)[6]  Yes Yes
删除方法(Deleted methods)
  
No Yes(有条件支持)[6]  Yes Yes
非静态成员初始化(Non-static data member initializers)
  
No ? Yes Yes
变参模板(Variadic templates) No ? Yes Yes
函数模板中的默认模板参数
(Default template arguments in function templates)
No ? Yes Yes
模板别名(Template aliases) No ? Yes Yes
前置构造函数(Forwarding constructors) No ? Yes Yes
noexcept关键字 No ? Yes Yes
constexpr关键字
  
No ? Yes Yes
Alignment 支持
  
Partial(部分) Partial(部分) Yes Yes
*this的右值引用 No ? No Yes
C99兼容性(C99compatibility) Partial(部分) Partial(部分) Partial(部分) Partial(部分)
线程本地存储(Thread local storage) Partial(部分) Partial(部分) Partial(部分)
  
构造函数继承(Inheriting constructors) No ? No No
Generalized attributes
  
No ? No No

通过相比较能够窥见,Clang在超过四分之二C++11职能完结上远在超过地位,而Visual Studio则稍显滞后。当然,那四个编写翻译器都抱有不错的子集适用于跨平台支付。( 注:GCC4.8.1已全然协助C++11,Clang 3.3 也全然协理了C++11。最新版本的Linux 发行版(索罗德HEL 7,CentOS 7,Ubuntu 14.06,都自带了完全辅助C++11的编写翻译器)

您能够使用项目推断、移动语义、右值引用、nullptr,static_assert,range-based参照他事他说加以考察相比较。同有毛病候您还足以动用最后和重写关键字来拓宽温馨的支配。其余,你还足以由此Enums(例举)强类型和提前声明,这里有几个革新后的模版富含extern keyword。

不满的是,Visual Studio并不支持相当多诉求的可变参数模板。另一方面,可变参数宏在这两款编写翻译器中只辅助C99标准。承接构造函数和广义属性那几个特色实际不是在另外地点都能博得支持。本地线程存款和储蓄是是支撑景况最棒的一局地(通过非关键字标准)。

上面给出在msdn中列举的对C++功用的支撑

示例

编辑

花色推导与auto关键字

C++ 11 规范打消了旧的 C++ 98 规范中 auto 的意趣(自动变量类型),改成了自行类型推导的意思。

在规范C/C++,使用变量必需显著的提出其品种(强类型)。可是随着模板类型的出现以及模版元编制程序的技艺,内定项目,非常是函数定义明显的钦定重返类型,就不便于表示。在如此的情景下,将中间结果存款和储蓄与变量是一件困难的事务,或者会供给掌握特定的元编制程序程序库的中间景色。

C++11提供了三种艺术化解上述所境遇的紧Baba。首先被有引人瞩目伊始化的变量能够运用auto关键字。那会依据该伊始化式的具体品种发生变量。示例:

1
auto otherVariable = 5;//otherVariable被按照int型来编译

otherVariable 的类是醒目概念的。因为5的档期的顺序是int,所以编写翻译器依据“int otherVariable =5;”来编写翻译。

1
auto someStrangeCallableType = boost::bind(&SomeFunction,_2,_1,someObject);

someStrangeCallableType 的门类是模版函数 boost::bind对一定引数再次来到的品种,作为编写翻译器语义解析的一有的,那一个类型能够简单地被编译器决定,但顾客要透过查看来判定项目就不是一件轻巧的事体。

除开,C++11还定义了 decltype 能够被用来在编写翻译器决定贰个表明式的项目。例如:

1
2
int someInt;
decltype(someInt) otherIntegerVariable = 5;

decltype 和 auto 一同使用会越发实用,因为 auto 变量的体系只有编译器知道。可是 decltype 对于那三个坦坦荡荡利用运算符重载和特化的类型的代码的代表也不行政管理用。

auto 对于滑坡冗赘的代码也很有用。举个例子来说,程序员不用写像上面那样:

1
for(vector<int>::const_iteratoritr=myvec.begin(); itr!=myvec.end(); ++itr)

能够动用auto简化为:

1
for(auto itr = myvec.begin(); itr != myvec.end(); ++itr)

那项差距随着程序员早先嵌套容器而进一步显然,尽管在这种景况下 typedef 是八个调整和收缩代码的好点子。

decltype 所表示的种类能够和 auto 推导出来的不等。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include<vector>
 
int main()
{
    const std::vector<int>v(1);
    auto a = v[0];//a为int类型
    decltype(v[0]) b = 0;//b为const int&类型,即std::vector<int>::operator[](size_type)const的返回类型
    auto c = 0;//c为int类型
    auto d = c;//d为int类型
    decltype(c) e;//e为int类型,c实体的类型
    decltype((c)) f = e;//f为int&类型,因为(c)是左值
    decltype(0) g;//g为int类型,因为0是右值
    return 0;
}

C++11标准由国标化组织(ISO)和国际电工作委员会员会(IEC)旗下的C++规范委员会(ISO/IEC JTC1/SC22/WG21)于二零一一年7月六日揭露[2]  ,并于二〇一一年三月问世。二零一二年11月二十三日的国际标准草案(N3376)是最周边于C++11标准的草案(仅编辑上的匡正)。本次正式为C++98公布后13年来第贰次首要革新。

目录

  1. 1 简介
  2. 2 本子改造
  3. 3 现状
  4. 4 示例
  1. ▪ 品类推导与auto关键字
  2. ▪ 表面模板
  3. 5 VS C++11效果与利益支撑表(总表)
  1. 6 并发手艺
  2. 7 VS C++ 11言语成效支撑表:C99

外文名
C++11

VS C++ 11语言作用援助表:C99

编辑

C++11 Core Language Features: C99
Visual Studio 2010
Visual Studio 2012
Visual Studio 2013
__func__
Partial
Partial
Partial
C99 preprocessor
Partial
Partial
Partial
long long
Yes
Yes
Yes
Extended integer types
N/A
N/A
N/A

本文由9159.com发布于编程,转载请注明出处:C++11包括大量的新特性,C++11标准为C++编程语言的

关键词:

上一篇:以只读方式打开文件,可移植性忠告...
下一篇:没有了