c++11介绍
- 中文名
- C++11
- 外文名
- C++11
- 标准版本
- C++标准第三版
- 发布时间
- 2011年8月12日
- 出版时间
- 2011年9月
- 标准文件号
- ISO/IEC 14882:2011
目录
简介
C++语言的标准化进程版本变更
现状
编译器实现情况示例
类型推导与auto关键字
|
1
|
auto otherVariable = 5;//otherVariable被按照int型来编译 |
|
1
|
auto someStrangeCallableType = boost::bind(&SomeFunction,_2,_1,someObject); |
|
1
2
|
int someInt;decltype(someInt) otherIntegerVariable = 5; |
|
1
|
for(vector<int>::const_iteratoritr=myvec.begin(); itr!=myvec.end(); ++itr) |
|
1
|
for(auto itr = myvec.begin(); itr != myvec.end(); ++itr) |
|
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;} |
外部模板
|
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 |
VS C++11功能支持表(总表)
|
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++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语言功能支持表: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
|
c++11介绍的更多相关文章
- C++11 并发指南一(C++11 多线程初探)
引言 C++11 自2011年发布以来已经快两年了,之前一直没怎么关注,直到最近几个月才看了一些 C++11 的新特性,今后几篇博客我都会写一些关于 C++11 的特性,算是记录一下自己学到的东西吧, ...
- 第三部分:Android 应用程序接口指南---第一节:应用程序组件---第一章1-1.Fragment
第1-1章 Fragments 在Activity中的fragment代表的是一种行为或用户界面的一部分.你可以在activity中结合多个fragments创建一个多面板UI,并可以在多个activ ...
- C++11 并发指南一(C++11 多线程初探)(转)
引言 C++11 自2011年发布以来已经快两年了,之前一直没怎么关注,直到最近几个月才看了一些 C++11 的新特性,今后几篇博客我都会写一些关于 C++11 的特性,算是记录一下自己学到的东西吧, ...
- C++11/14笔记
目录 语言层面 模板表达式中的空格 nullptr和std::nullptr_t 自动推导类型----auto 一致性初始化----Uniform Initialization 初始化列表(initi ...
- 【C/C++开发】C++11 并发指南一(C++11 多线程初探)
引言 C++11 自2011年发布以来已经快两年了,之前一直没怎么关注,直到最近几个月才看了一些 C++11 的新特性,今后几篇博客我都会写一些关于 C++11 的特性,算是记录一下自己学到的东西吧, ...
- 高级php面试题(转)
一.mysql相关知识 1. mysql优化方式 MYSQL 优化常用方法 mysql 性能优化方案 2.如何分库分表 ...
- 高级php面试题
在网上看到一些高级php 的面试题目.. 最近接连面试了几家公司,有些重要问题记录一下,督促自己学习提高,同时希望给朋友们一些帮助.内容很多,一点点完善,一步步学习..有些是面试被问,有些是招聘要求, ...
- 了不起的Node.js: 将JavaScript进行到底(Web开发首选,实时,跨多服务器,高并发)
了不起的Node.js: 将JavaScript进行到底(Web开发首选,实时,跨多服务器,高并发) Guillermo Rauch 编 赵静 译 ISBN 978-7-121-21769-2 2 ...
- Android 使用 DownloadManager 管理系统下载任务的方法,android管理系统
从Android 2.3(API level 9)开始Android用系统服务(Service)的方式提供了Download Manager来优化处理长时间的下载操作.Download Manager ...
随机推荐
- jQuery之位置
1.offset()获取匹配元素在相对浏览器窗口的偏移量 返回一个对象,包括两个属性.left:相对浏览器窗口左边的距离.top:相对浏览器顶部的距离. $("#div1").o ...
- tr 替换删除字符
1.关于tr 通过使用 tr,您可以非常容易地实现 sed 的许多最基本功能.您可以将 tr 看作为 sed 的(极其)简化的变体:它可以用一个字符来替换另一个字符,或者可以完全除去一些字符.您 ...
- 非常棒的Java REST服务器栈
Dropwizard 是一个开源的Java框架,用于开发OPS友好.高性能的基于REST的后端.它是由Yammer开发的,来驱动基于JVM的后端. Dropwizard提供同类最佳的Java库到一个嵌 ...
- hash_map和map的区别
hash_map和map的区别 分类: STL2008-10-15 21:24 5444人阅读 评论(0) 收藏 举报 class数据结构编译器存储平台tree 这里列几个常见问题,应该对你理解和使用 ...
- 清除NT Kernel & System占用80端口
运行'netstat -ano'发现80端口被system占用,进程号'4'转到任务管理器上看pid对应的进程描述是NT kernel & system. 解决方法: 1.1运行'regedi ...
- Eclipse插件Mylyn管理上下文任务管理
原文地址:http://www.ibm.com/developerworks/cn/java/j-mylyn1/ Mylyn 2.0,第 1 部分: 集成的任务管理 使用集成的 Eclipse 问题跟 ...
- OpenWrt编译
OpenWrt编译简单过程1,OpenWrt编译环境准备sudo apt-get install gcc g++ binutils patch bzip2 flex bison make autoco ...
- 修改linux共享内存大小
这是实际linux系统显示的实际数据: beijibing@bjb-desktop:/proc/sys/kernel$ cat shmmax 33554432 beijibing@bjb-deskt ...
- Android - 使用Intent来启动Activity
本文地址: http://blog.csdn.net/caroline_wendy/article/details/21455141 Intent 的用途是 绑定 应用程序组件, 并在应用程序之间进行 ...
- 将mysql服务加入到系统服务中 服务器配置 注销时不会关闭mysql
将mysql加入系统服务中: 或者在cmd中输入:mysql安装路径\mysql\bin\mydqld.exe --install mysql --defaults-file="mysql安 ...