C++11
来自 cppreference.cn
< cpp
C++11 是 C++ 的第二个主要版本,也是自 C++98 以来最重要的更新。 引入了大量更改,以标准化现有实践并改进 C++ 程序员可用的抽象。
在 2011 年 8 月 12 日最终获得 ISO 批准之前,使用了名称“C++0x”,因为预计会在 2010 年之前发布。 C++03 和 C++11 之间经历了 8 年,因此它已成为迄今为止版本之间间隔最长的时间。 从那时起,目前 C++ 每 3 年定期更新一次。
本节尚不完整 |
以下特性已合并到 C++11 中
- 来自 TR1:TR1 的全部,除了 特殊函数。
- 来自 Boost:线程库、exception_ptr、error_code 和 error_condition、迭代器改进 (begin、end、next、prev)
- 来自 C:C 风格的 Unicode 转换函数
目录 |
[编辑] 核心语言特性
- auto 和 decltype
- 默认的 和 已删除的 函数
- final 和 override
- 尾置返回类型
- 右值引用
- 移动构造函数 和 移动赋值运算符
- 作用域枚举
- constexpr 和 字面类型
- 列表初始化
- 委托 和 继承的 构造函数
- 大括号或等号 初始化器
- nullptr
- long long
- char16_t 和 char32_t
- 类型别名
- 可变参数模板
- 广义(非平凡)联合体
- 广义 POD(平凡类型 和 标准布局类型)
- Unicode 字符串字面量
- 用户定义的字面量
- 属性
- lambda 表达式
- noexcept 说明符和 noexcept 运算符
- alignof 和 alignas
- 多线程 内存模型
- 线程局部存储
- GC 接口 (在 C++23 中移除)
- 范围-for(基于 Boost 库)
- static_assert(基于 Boost 库)
本节尚不完整 |
[编辑] 库特性
[编辑] 头文件
- <array>
- <atomic>
- <cfenv>
- <chrono>
- <cinttypes>
- <condition_variable>
- <cstdint>
- <cuchar>
- <forward_list>
- <future>
- <initializer_list>
- <mutex>
- <random>
- <ratio>
- <regex>
- <scoped_allocator>
- <system_error>
- <thread>
- <tuple>
- <typeindex>
- <type_traits>
- <unordered_map>
- <unordered_set>
[编辑] 库特性
- 并发支持库
-
emplace()
以及在现有库的所有部分中对右值引用的其他使用 - std::unique_ptr
- std::move_iterator
- std::initializer_list
- 有状态 和 作用域 分配器
- std::forward_list
- chrono 库
- ratio 库
- 新的 算法
- std::all_of, std::any_of, std::none_of,
- std::find_if_not,
- std::copy_if, std::copy_n,
- std::move, std::move_backward,
- std::random_shuffle, std::shuffle,
- std::is_partitioned, std::partition_copy, std::partition_point,
- std::is_sorted, std::is_sorted_until,
- std::is_heap, std::is_heap_until,
- std::minmax, std::minmax_element,
- std::is_permutation,
- std::iota,
- std::uninitialized_copy_n
本节尚不完整 |
[编辑] 缺陷报告
[编辑] 编译器支持
[编辑] C++11 核心语言特性
C++11 特性 |
论文 |
GCC |
Clang |
MSVC |
Apple Clang |
EDG eccp |
Intel C++ |
Nvidia HPC C++ (ex PGI)* |
Nvidia nvcc |
Cray |
Embarcadero C++ Builder |
IBM Open XL C++ for AIX |
IBM Open XL C++ for z/OS |
IBM XL C++ |
Sun/Oracle C++ |
HP aCC |
Digital Mars C++ |
|
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
C99 预处理器 | N1653 | 4.3 | 是 | 19.0 (2015)* (部分)* 19.26* |
是 | 4.1 | 11.1 | 2015 | 7.0 | 8.4 | 是 | 17.1.0 | 1.1.0 | 10.1 | 5.9 | A.06.25 | 是 | |
static_assert (FTM)* | N1720 | 4.3 | 2.9 | 16.0* | 是 | 4.1 | 11.0 | 2015 | 7.0 | 8.4 | 是 | 17.1.0 | 1.1.0 | 11.1 | 5.13 | A.06.25 | 8.52 | |
直角括号 | N1757 | 4.3 | 是 | 14.0* | 是 | 4.1 | 11.0 | 2015 | 7.0 | 8.4 | 是 | 17.1.0 | 1.1.0 | 12.1 | 5.13 | |||
扩展的 friend 声明 | N1791 | 4.7 | 2.9 | 16.0* | 是 | 4.1 | 11.1 (部分) 12.0 |
2015 | 7.0 | 8.4 | 是 | 17.1.0 | 1.1.0 | 11.1 | 5.13 | A.06.25 | ||
long long
|
N1811 | 是 | 是 | 14.0* | 是 | 是 | 是 | 2015 | 7.0 | 8.4 | 是 | 17.1.0 | 1.1.0 | 是 | 是 | 是 | 是 | |
auto | N1984 | 4.4 | 是 | 16.0* | 是 | 3.9 | 11.0 (部分)* 12.0 |
2015 | 7.0 | 8.4 | 是 | 17.1.0 | 1.1.0 | 11.1 | 5.13 | A.06.25 | ||
委托构造函数 (FTM)* | N1986 | 4.7 | 3.0 | 18.0* | 是 | 4.7 | 14.0 | 2015 | 7.0 | 8.4 | 是 | 17.1.0 | 1.1.0 | 11.1 | 5.13 | A.06.28 | ||
extern template | N1987 | 3.3 | 是 | 12.0* | 是 | 3.9 | 9.0 | 2015 | 7.0 | 8.4 | 是 | 17.1.0 | 1.1.0 | 11.1 | 5.13 | A.06.25 | ||
constexpr (FTM)* | N2235 | 4.6 | 3.1 | 19.0 (2015)* | 是 | 4.6 | 13.0 (部分) 14.0 |
2015 | 7.0 | 8.4 | 是 | 17.1.0 | 1.1.0 | 12.1 (部分) 13.1 |
5.13 | A.06.28 | ||
char16_t 和 char32_t (FTM)* |
N2249 | 4.4 | 2.9 | 19.0 (2015)* | 是 | 4.4 | 12.1 (部分)* 14.0 |
2015 | 7.0 | 8.4 | 是 | 17.1.0 | 1.1.0 | 13.1.1* | 5.13 | A.06.27 | 8.52 | |
对 类型特征 的编译器支持。N2255* | N2255 N2984 N3142 |
4.3 (部分)* 4.8 (部分)* 5 |
3.0 | 14.0* (部分)* 19.0 (2015)* |
是 | 4.0 | 10.0 | 2015 | 8.4 | 是 | 17.1.0 | 1.1.0 | 13.1.3 | 5.13 | 6.16 | |||
模板别名 (FTM)* | N2258 | 4.7 | 3.0 | 18.0* | 是 | 4.2 | 12.1 | 2015 | 7.0 | 8.4 | 是 | 17.1.0 | 1.1.0 | 13.1.1* | 5.13 | A.06.27 | ||
alignas | N2341 | 4.8 | 3.0 | 19.0 (2015)* | 是 | 4.8 | 15.0 | 2015 | 7.0 | 8.6 | 是 | 17.1.0 | 1.1.0 | 13.1.2* | 5.13 | |||
alignof | N2341 | 4.5 | 2.9 | 19.0 (2015)* | 是 | 4.8 | 15.0 | 2015 | 7.0 | 8.4 | 是 | 17.1.0 | 1.1.0 | 13.1.2* | 5.13 | |||
默认和删除的函数 | N2346 | 4.4 | 3.0 | 18.0* | 是 | 4.1 | 12.0 | 2015 | 7.0 | 8.4 | 是 | 17.1.0 | 1.1.0 | 13.1 | 5.13 | A.06.25 | ||
强类型 enum
|
N2347 | 4.4 | 2.9 | 16.0* (部分) 17.0* |
是 | 4.0 | 13.0 | 2015 | 7.0 | 8.4 | 是 | 17.1.0 | 1.1.0 | 12.1 | 5.13 | A.06.25 | ||
原子操作 | N2427 | 4.4 | 3.1 | 17.0* | 是 | 是 | 13.0 | 2015 | 8.4 | 是 | 17.1.0 | 1.1.0 | 13.1.2* | 5.14 | ||||
nullptr | N2431 | 4.6 | 2.9 | 16.0* | 是 | 4.2 | 12.1 | 2015 | 7.0 | 8.4 | 是 | 17.1.0 | 1.1.0 | 13.1 | 5.13 | A.06.27 | 8.52 | |
显式 转换运算符 | N2437 | 4.5 | 3.0 | 18.0* | 是 | 4.4 | 13.0 | 2015 | 7.0 | 8.4 | 是 | 17.1.0 | 1.1.0 | 12.1 | 5.13 | A.06.27 | ||
引用限定符 (FTM)* | N2439 | 4.8.1 | 2.9 | 19.0 (2015)* | 是 | 4.7 | 14.0 | 2015 | 7.0 | 8.4 | 是 | 17.1.0 | 1.1.0 | 13.1.2* | 5.13 | A.06.28 | ||
Unicode 字符串字面量 (FTM)* | N2442 | 4.4 | 3.0 | 19.0 (2015)* | 是 | 4.7 | 11.0* | 2015 | 7.0 | 8.4 | 是 | 17.1.0 | 1.1.0 | 10.1* 13.1.1* |
5.7 | A.06.28 | 8.52 | |
原始 字符串字面量 (FTM)* | N2442 | 4.5 | 是 | 18.0* | 是 | 4.7 | 14.0 | 2015 | 7.0 | 8.4 | 是 | 17.1.0 | 1.1.0 | 13.1.1, 除了 AIX xlC 13.1.3* | 5.13 | A.06.28 | 8.52 | |
内联命名空间 | N2535 | 4.4 | 2.9 | 19.0 (2015)* | 是 | 4.5 | 14.0 | 2015 | 7.0 | 8.4 | 是 | 17.1.0 | 1.1.0 | 11.1 | 5.13 | A.06.28 | ||
继承构造函数 (FTM)* | N2540 | 4.8 | 3.3 | 19.0 (2015)* | 是 | 4.8 | 15.0 | 2015 | 7.0 | 8.4 | 是 | 17.1.0 | 1.1.0 | 13.1.1* | 5.13 | |||
尾随函数返回类型 | N2541 | 4.4 | 2.9 | 16.0* | 是 | 4.1 | 12.0 | 2015 | 7.0 | 8.4 | 是 | 17.1.0 | 1.1.0 | 12.1 | 5.13 | A.06.27 | ||
无限制的 union | N2544 | 4.6 | 3.0 | 19.0 (2015)* | 是 | 4.6 | 14.0* | 2015 | 7.0 | 8.4 | 是 | 17.1.0 | 1.1.0 | 13.1.2* | 5.13 | A.06.28 | ||
可变参数模板 (FTM)* | N2242 N2555 |
4.3 (部分)* 4.4 |
2.9 | 18.0* | 是 | 4.3 (部分)* 4.3 |
12.1 | 2015 | 7.0 | 8.4 | 是 | 17.1.0 | 1.1.0 | 11.1 (部分)* | 5.13 | A.06.27 | ||
表达式 SFINAE | N2634 | 4.4 | 2.9 | 19.14* | 是 | 4.2 | 12.1 | 2015 | 7.0 | 8.4 | 是 | 17.1.0 | 1.1.0 | |||||
本地和未命名类型作为模板参数 | N2657 | 4.5 | 2.9 | 16.0* | 是 | 4.2 | 12.0 | 2015 | 7.0 | 8.4 | 是 | 17.1.0 | 1.1.0 | 13.1.2* | 5.13 | A.06.27 | ||
线程局部存储 | N2659 | 4.4 (部分) 4.8 |
3.3* | 16.0* (部分) 19.0 (2015)* |
是 | 4.8 | 11.1 (部分) 15.0* |
2015 | 8.4 | 是 | 17.1.0 | 1.1.0 | 10.1 (部分)* 13.1.2 (部分)* |
5.9 (部分) | 8.52 (部分) | |||
具有并发性的动态初始化和销毁(魔法静态变量) (FTM)* | N2660 | 4.3 | 2.9 | 19.0 (2015)* | 是 | 是 | 11.1* | 2015 | 8.4 | 是 | 17.1.0 | 1.1.0 | 13.1.2* | 5.13 | A.06.25 | |||
垃圾回收和基于可达性的泄漏检测 | N2670 | |||||||||||||||||
初始化列表 (FTM)* | N2672 | 4.4 | 3.1 | 18.0* | 是 | 4.5 | 13.0 (部分) 14.0 |
2015 | 7.0 | 8.4 | 是 | 17.1.0 | 1.1.0 | 13.1.2* | 5.13 | A.06.28 | ||
非静态数据成员初始化器 (FTM)* | N2756 | 4.7 | 3.0 | 18.0* | 是 | 4.6 | 14.0 | 2015 | 7.0 | 8.4 | 是 | 17.1.0 | 1.1.0 | 13.1.2* | 5.13 | A.06.28 | ||
属性,[[noreturn]] (FTM)* |
N2761 | 4.8 | 3.3 | 19.0 (2015)* | 是 | 4.2 | 12.1 | 2015 | 7.0 | 8.4 | 是 | 17.1.0 | 1.1.0 | 13.1.1* | 5.13 | A.06.27 | ||
[[carries_dependency]] |
N2556 N2643 |
3.3* | 17.1.0* | |||||||||||||||
前向(不透明)enum 声明
|
N2764 | 4.6 | 3.1 | 17.0* | 是 | 4.5 | 11.1 (部分) 14.0 |
2015 | 7.0 | 8.4 | 是 | 17.1.0 | 1.1.0 | 12.1 | 5.13 | |||
用户定义的字面量 (FTM)* | N2765 | 4.7 | 3.1 | 19.0 (2015)* | 是 | 4.8 | 15.0 | 2015 | 7.0 | 8.4 | 是 | 17.1.0 | 1.1.0 | 13.1.2* | 5.14 | |||
右值引用 (FTM)* | N2118 N2844 CWG1138 |
4.3 (部分)* 4.5 |
2.9 | 16.0* (部分)* 17.0* |
是 | 4.5 | 11.1 (部分)* 12.0 (部分)* 14.0 |
2015 | 7.0* | 8.4 | 是 | 17.1.0 | 1.1.0 | 12.1 | 5.13 | A.06.25 | ||
Lambda 表达式 (FTM)* | N2550 N2658 N2927 |
4.5 | 3.1 | 16.0* (部分)* 17.0* |
是 | 4.1 | 12.0 | 2015 | 7.0 | 8.4 | 是 | 17.1.0 | 1.1.0 | 13.1.2* | 5.13 | A.06.25 | ||
范围 for 循环 (FTM)* | N2930 N3271 |
4.6 | 3.0 | 17.0* | 是 | 4.5 | 13.0 | 2015 | 7.0 | 8.4 | 是 | 17.1.0 | 1.1.0 | 13.1.2* | 5.13 | A.06.28 | ||
noexcept | N3050 | 4.6 | 3.0 | 19.0 (2015)* | 是 | 4.5 | 14.0 | 2015 | 7.0 | 8.4 | 是 | 17.1.0 | 1.1.0 | 13.1.1* | 5.13 | A.06.28 | ||
默认移动特殊成员函数 | N3053 | 4.6 | 3.0 | 19.0 (2015)* | 是 | 4.5 | 14.0 | 2015 | 7.0 | 8.4 | 是 | 17.1.0 | 1.1.0 | 5.13 | A.06.25 | |||
override 和 final | N2928 N3206 N3272 |
4.7 | 2.9 | 14.0* (部分) 17.0* |
是 | 4.8 | 12.0 (部分)* 14.0 |
2015 | 7.0 | 8.4 | 是 | 17.1.0 | 1.1.0 | 13.1.1* | 5.13 | |||
decltype (FTM)* | N2343 N3276 |
4.3 (部分)* 4.8.1 |
2.9 | 16.0* (部分)* 17.0* |
是 | 4.2 (部分)* 4.8 |
11.0 (部分)* 12.0 |
2015 | 7.0 | 8.4 | 是 | 17.1.0 | 1.1.0 | 11.1 (部分)* | 5.13 | A.06.25 | 8.52 (部分)* | |
C++11 特性 |
论文 |
GCC |
Clang |
MSVC |
Apple Clang |
EDG eccp |
Intel C++ |
Nvidia HPC C++ (ex PGI)* |
Nvidia nvcc |
Cray |
Embarcadero C++ Builder |
IBM Open XL C++ for AIX |
IBM Open XL C++ for z/OS |
IBM XL C++ |
Sun/Oracle C++ |
HP aCC |
Digital Mars C++ |
[编辑] C++11 库特性
C++11 特性 |
论文 |
GCC libstdc++ |
Clang libc++ |
MSVC STL |
Apple Clang* |
IBM Open XL C/C++ for AIX* |
Sun/Oracle C++* |
Embarcadero C++ Builder* |
|
---|---|---|---|---|---|---|---|---|---|
正则表达式库 | N1429 | 4.9 | 2.8 | 是 | 是 | 17.1.0 | |||
类型特征。N1836* | N1836 N2240 N2244 N2255 N2342 N2984 N3142 |
4.3 (部分)* 4.8 (部分)* 5 |
3.0 | 14.0* (部分)* 19.0 (2015)* |
是 | 17.1.0 | 5.13 | 是 | |
容器的成员函数 cbegin 、cend 、crbegin 和 crend |
N1913 LWG1192 |
4.3 (部分)* 4.5 |
是* | 16.0* | 是* | 17.1.0 | |||
垃圾回收和基于可达性的泄漏检测(库支持) | N2670 | 6 (无操作)* |
3.4 (无操作)* |
19.0 (2015)* (无操作)* |
是 (无操作)* |
17.1.0 | |||
货币、时间 和 hexfloat I/O 操纵器 | N2071 N2072 |
5 | 3.8 | 19.0 (2015)* | 是 | 17.1.0 | 5.15 | ||
不允许 COW(写时复制) std::basic_string | N2668 | 5 | 是 | 是 | 是 | 17.1.0 | 是 | ||
C++11 特性 |
论文 |
GCC libstdc++ |
Clang libc++ |
MSVC STL |
Apple Clang* |
IBM Open XL C/C++ for AIX* |
Sun/Oracle C++* |
Embarcadero C++ Builder* |
* - 将鼠标悬停在标有星号的单元格上 * 以查看其他弹出注释。
DRnn - “DR”后的数字 nn 表示缺陷报告应用的目标 C++ 修订版,例如,DR20 → C++20。
[编辑] 外部链接
1. | C++11 - 维基百科 |
2. | 可用的 C++11 示例 |