
- 发布时间
- 2011年8月12日
- 标准版本
- C++标准第三版
- 标准文件号
- ISO/IEC 14882:2011
- 中文名
- C++11
- 出版时间
- 2011年9月
- 外文名
- C++11
-
更多相关内容
-
C++11新标准中文版
2013-08-26 14:10:31C++11新标准 来自百度文库 这里免积分和大家共享 -
C++11 & C++14 & C++17新特性
2018-12-06 07:59:13C++11:C++11包括大量的新特性:包括lambda表达式,类型推导关键字auto、decltype,和模板的大量改进。 新的关键字 auto C++11中引入auto第一种作用是为了自动类型推导 auto的自动类型推导,用于从初始化表达式...原文:https://www.cnblogs.com/guxuanqing/p/6707824.html
C++11:C++11包括大量的新特性:包括lambda表达式,类型推导关键字auto、decltype,和模板的大量改进。
新的关键字
auto
C++11中引入auto第一种作用是为了自动类型推导
auto的自动类型推导,用于从初始化表达式中推断出变量的数据类型。通过auto的自动类型推导,可以大大简化我们的编程工作
auto实际上实在编译时对变量进行了类型推导,所以不会对程序的运行效率造成不良影响
另外,似乎auto并不会影响编译速度,因为编译时本来也要右侧推导然后判断与左侧是否匹配。
- auto a; // 错误,auto是通过初始化表达式进行类型推导,如果没有初始化表达式,就无法确定a的类型
- auto i = 1;
- auto d = 1.0;
- auto str = "Hello World";
- auto ch = 'A';
- auto func = less<int>();
- vector<int> iv;
- auto ite = iv.begin();
- auto p = new foo() // 对自定义类型进行类型推导
auto不光有以上的应用,它在模板中也是大显身手,比如下例这个加工产品的例子中,如果不使用auto就必须声明Product这一模板参数:
- template <typename Product, typename Creator>
- void processProduct(const Creator& creator) {
- Product* val = creator.makeObject();
- // do somthing with val
- }
- .
如果使用auto,则可以这样写:
- template <typename Creator>
- void processProduct(const Creator& creator) {
- auto val = creator.makeObject();
- // do somthing with val
- }
抛弃了麻烦的模板参数,整个代码变得更加正解了。
decltype
decltype实际上有点像auto的反函数,auto可以让你声明一个变量,而decltype则可以从一个变量或表达式中得到类型,有实例如下:
- int x = 3;
- decltype(x) y = x;
有人会问,decltype的实用之处在哪里呢,我们接着上边的例子继续说下去,如果上文中的加工产品的例子中我们想把产品作为返回值该怎么办呢?我们可以这样写:
- template <typename Creator>
- auto processProduct(const Creator& creator) -> decltype(creator.makeObject()) {
- auto val = creator.makeObject();
- // do somthing with val
- }
nullptr
nullptr是为了解决原来C++中NULL的二义性问题而引进的一种新的类型,因为NULL实际上代表的是0,
- void F(int a){
- cout<<a<<endl;
- }
- void F(int *p){
- assert(p != NULL);
- cout<< p <<endl;
- }
- int main(){
- int *p = nullptr;
- int *q = NULL;
- bool equal = ( p == q ); // equal的值为true,说明p和q都是空指针
- int a = nullptr; // 编译失败,nullptr不能转型为int
- F(0); // 在C++98中编译失败,有二义性;在C++11中调用F(int)
- F(nullptr);
- return 0;
- }
序列for循环
在C++中for循环可以使用类似java的简化的for循环,可以用于遍历数组,容器,string以及由begin和end函数定义的序列(即有Iterator),示例代码如下:
- map<string, int> m{{"a", 1}, {"b", 2}, {"c", 3}};
- for (auto p : m){
- cout<<p.first<<" : "<<p.second<<endl;
- }
Lambda表达式
lambda表达式类似Javascript中的闭包,它可以用于创建并定义匿名的函数对象,以简化编程工作。Lambda的语法如下:
[函数对象参数](操作符重载函数参数)->返回值类型{函数体}
- vector<int> iv{5, 4, 3, 2, 1};
- int a = 2, b = 1;
- for_each(iv.begin(), iv.end(), [b](int &x){cout<<(x + b)<<endl;}); // (1)
- for_each(iv.begin(), iv.end(), [=](int &x){x *= (a + b);}); // (2)
- for_each(iv.begin(), iv.end(), [=](int &x)->int{return x * (a + b);});// (3)
- []内的参数指的是Lambda表达式可以取得的全局变量。(1)函数中的b就是指函数可以得到在Lambda表达式外的全局变量,如果在[]中传入=的话,即是可以取得所有的外部变量,如(2)和(3)Lambda表达式
- ()内的参数是每次调用函数时传入的参数。
- ->后加上的是Lambda表达式返回值的类型,如(3)中返回了一个int类型的变量
变长参数的模板
我们在C++中都用过pair,pair可以使用make_pair构造,构造一个包含两种不同类型的数据的容器。比如,如下代码:
- auto p = make_pair(1, "C++ 11");
由于在C++11中引入了变长参数模板,所以发明了新的数据类型:tuple,tuple是一个N元组,可以传入1个, 2个甚至多个不同类型的数据
- auto t1 = make_tuple(1, 2.0, "C++ 11");
- auto t2 = make_tuple(1, 2.0, "C++ 11", {1, 0, 2});
这样就避免了从前的pair中嵌套pair的丑陋做法,使得代码更加整洁
另一个经常见到的例子是Print函数,在C语言中printf可以传入多个参数,在C++11中,我们可以用变长参数模板实现更简洁的Print
- template<typename head, typename... tail>
- void Print(Head head, typename... tail) {
- cout<< head <<endl;
- Print(tail...);
- }
Print中可以传入多个不同种类的参数,如下:
- Print(1, 1.0, "C++11");
更加优雅的初始化方法
在引入C++11之前,只有数组能使用初始化列表,其他容器想要使用初始化列表,只能用以下方法:
- int arr[3] = {1, 2, 3}
- vector<int> v(arr, arr + 3);
在C++11中,我们可以使用以下语法来进行替换:
- int arr[3]{1, 2, 3};
- vector<int> iv{1, 2, 3};
- map<int, string>{{1, "a"}, {2, "b"}};
- string str{"Hello World"};
然后呢…
如果你想了解更多C++11令人兴奋的新特性,我会向你推荐这两个博客:
原文链接:http://my.oschina.net/wangxuanyihaha/blog/183151
C++14:C++14的主要特性可以分为三个领域:Lambda函数、constexpr和类型推导。
Lambda函数
C++14的泛型Lambda使编写如下语句成为可能:
auto lambda = [](auto x, auto y) {return x + y;};
而另一方面,C++11要求Lambda参数使用具体的类型声明,比如:
auto lambda = [](int x, int y) {return x + y;};
此外,新标准中的std::move函数可用于捕获Lambda表达式中的变量,这是通过移动对象而非复制或引用对象实现的:
std::unique_ptr ptr(new int(10)); auto lambda = [value = std::move(ptr)] {return *value;};
constexpr
在C++11中,使用constexpr声明的函数可以在编译时执行,生成一个值,用在需要常量表达式的地方,比如作为初始化模板的整形参数。C++11的constexpr函数只能包含一个表达式,C++14放松了这些限制,支持诸如if 和switch等条件语句,支持循环,其中包括基于区间(range)的for 循环。
类型推导
C++11仅支持Lambda函数的类型推导,C++14对其加以扩展,支持所有函数的返回类型推导:
auto DeducedReturnTypeFunction();
因为C++14是强类型语言,有些限制需要考虑:
- 如果一个函数的实现中有多个返回语句,这些语句一定要推导出同样的类型。
- 返回类型推导可以用在前向声明中,但是在使用它们之前,翻译单元中必须能够得到函数定义。
- 返回类型推导可以用在递归函数中,但是递归调用必须以至少一个返回语句作为先导,以便编译器推导出返回类型。
C++14带来的另一个类型推导方面的改进是decltype(auto)语法,它支持使用与auto同样的机制计算给定表达式的类型。auto和 decltype在C++11中就已经出现了,但是它们在推导类型时使用了不同的机制,这可能会产生不同的结果。
C++14中的其他改变包括可以声明变量模板,支持使用0b或0B前缀来声明二进制字面常量。InfoQ已经介绍过C++14中可能破坏C++11程序的其他小型修改。
主流C++编译器对新语言特性的支持正在有条不紊地开发:Clang“完全实现了当前草案的所有内容”;GCC和Visual Studio也对C++14的新特性提供了一些支持。
-
C++11新特性
2020-07-17 00:31:17什么是C++11 C++11是曾经被叫做C++0x,是对目前C++语言的扩展和修正,C++11不仅包含核心语言的新机能,而且扩展了C++的标准程序库(STL),并入了大部分的C++ Technical Report 1(TR1)程序库(数学的特殊函数除外)...什么是C++11
C++11是曾经被叫做C++0x,是对目前C++语言的扩展和修正,C++11不仅包含核心语言的新机能,而且扩展了C++的标准程序库(STL),并入了大部分的C++ Technical Report 1(TR1)程序库(数学的特殊函数除外)。
C++11包括大量的新特性:包括lambda表达式,类型推导关键字auto、decltype,和模板的大量改进 等等。
本文将对C++11的以上新特性进行简单的讲解,以便大家能够快速了解到C++11对C++的易用性方面起到的巨大作用。
C++11 是第二个真正意义上的 C++ 标准,也是 C++ 的一次重大升级。C++11 增加了很多现代编程语言的特性,比如自动类型推导、智能指针、lambda 表达式等,这使得 C++ 看起来又酷又潮,一点也不输 Java 和 C#。
新的关键字
auto
C++11中引入auto第一种作用是为了自动类型推导
auto的自动类型推导,用于从初始化表达式中推断出变量的数据类型。通过auto的自动类型推导,可以大大简化我们的编程工作
auto实际上实在编译时对变量进行了类型推导,所以不会对程序的运行效率造成不良影响
另外,似乎auto并不会影响编译速度,因为编译时本来也要右侧推导然后判断与左侧是否匹配。
auto a; // 错误,auto是通过初始化表达式进行类型推导,如果没有初始化表达式,就无法确定a的类型 auto i = 1; auto d = 1.0; auto str = "Hello World"; auto ch = 'A'; auto func = less<int>(); vector<int> iv; auto ite = iv.begin(); auto p = new foo() // 对自定义类型进行类型推导
auto不光有以上的应用,它在模板中也是大显身手,比如下例这个加工产品的例子中,如果不使用auto就必须声明Product这一模板参数:
template <typename Product, typename Creator> void processProduct(const Creator& creator) { Product* val = creator.makeObject(); // do somthing with val }
如果使用auto,则可以这样写:
template <typename Creator> void processProduct(const Creator& creator) { auto val = creator.makeObject(); // do somthing with val }
抛弃了麻烦的模板参数,整个代码变得更加整洁了。
decltype
decltype实际上有点像auto的反函数,auto可以让你声明一个变量,而decltype则可以从一个变量或表达式中得到类型,有实例如下:
int x = 3; decltype(x) y = x;
有人会问,decltype的实用之处在哪里呢,我们接着上边的例子继续说下去,如果上文中的加工产品的例子中我们想把产品作为返回值该怎么办呢?我们可以这样写:
template <typename Creator> auto processProduct(const Creator& creator) -> decltype(creator.makeObject()) { auto val = creator.makeObject(); // do somthing with val }
nullptr 空指针
nullptr是为了解决原来C++中NULL的二义性问题而引进的一种新的类型,因为NULL实际上代表的是0,
以往我们使用
NULL
表示空指针。它实际上是个为0的int
值void F(int a){ cout<<a<<endl; } void F(int *p){ assert(p != NULL); cout<< p <<endl; } int main(){ int *p = nullptr; int *q = NULL; bool equal = ( p == q ); // equal的值为true,说明p和q都是空指针 int a = nullptr; // 编译失败,nullptr不能转型为int F(0); // 在C++98中编译失败,有二义性;在C++11中调用F(int) F(nullptr); return 0; }
序列for循环
在C++11 中for循环可以使用类似java的简化的for循环,可以用于遍历数组,容器,string以及由begin和end函数定义的序列(即有Iterator),示例代码如下:
map<string, int> m{{"a", 1}, {"b", 2}, {"c", 3}}; for (auto p : m){ cout<<p.first<<" : "<<p.second<<endl; }
Lambda表达式 Lambda :英 [ˈlæmdə]
lambda表达式类似Javascript中的闭包,它可以用于创建并定义匿名的函数对象,以简化编程工作。
Lambda的语法如下:
[函数对象参数](操作符重载函数参数)->返回值类型{函数体}
vector<int> iv{5, 4, 3, 2, 1}; int a = 2, b = 1; for_each(iv.begin(), iv.end(), [b](int &x){cout<<(x + b)<<endl;}); // (1) for_each(iv.begin(), iv.end(), [=](int &x){x *= (a + b);}); // (2) for_each(iv.begin(), iv.end(), [=](int &x)->int{return x * (a + b);});// (3)
- []内的参数指的是Lambda表达式可以取得的全局变量。(1)函数中的b就是指函数可以得到在Lambda表达式外的全局变量,如果在[]中传入=的话,即是可以取得所有的外部变量,如(2)和(3)Lambda表达式()内的参数是每次调用函数时传入的参数。
- ->后加上的是Lambda表达式返回值的类型,如(3)中返回了一个int类型的变量
变长参数的模板
我们在C++中都用过pair,pair可以使用make_pair构造,构造一个包含两种不同类型的数据的容器。比如,如下代码:
auto p = make_pair(1, "C++ 11");
由于在C++11中引入了变长参数模板,所以发明了新的数据类型:tuple,tuple是一个N元组,可以传入1个, 2个甚至多个不同类型的数据
auto t1 = make_tuple(1, 2.0, "C++ 11"); auto t2 = make_tuple(1, 2.0, "C++ 11", {1, 0, 2});
这样就避免了从前的pair中嵌套pair的丑陋做法,使得代码更加整洁
另一个经常见到的例子是Print函数,在C语言中printf可以传入多个参数,在C++11中,我们可以用变长参数模板实现更简洁的Print
template<typename head, typename... tail> void Print(Head head, typename... tail) { cout<< head <<endl; Print(tail...); }
Print中可以传入多个不同种类的参数,如下:
Print(1, 1.0, "C++11");
更加优雅的初始化方法
在引入C++11之前,只有数组能使用初始化列表,其他容器想要使用初始化列表,只能用以下方法:
int arr[3] = {1, 2, 3} vector<int> v(arr, arr + 3);
在C++11中,我们可以使用以下语法来进行替换:
int arr[3]{1, 2, 3}; vector<int> iv{1, 2, 3}; map<int, string>{{1, "a"}, {2, "b"}}; string str{"Hello World"};
https://www.xuebuyuan.com/3265958.html
http://c.biancheng.net/cplus/11/
-
C++ 编译器对C++11、14、17的支持情况
2019-03-21 17:03:56这些功能特性包括C++11、C++14、C++17和之后接受的标准版本 (C++20/C++2a),还有几个技术规范的内容。 C++2a 功能特性 注意,此列表可能根据 C++2a 标准草案的演化而更改。 C++2a 功能特性 提案 ...C++ 编译器支持情况表
下表为各个编译器对新的 C++ 功能特性的支持情况。这些功能特性包括 C++11 、 C++14 、 C++17 和之后接受的标准版本 (C++20/C++2a) ,还有几个技术规范的内容。
C++2a 功能特性
注意,此列表可能根据 C++2a 标准草案的演化而更改。
C++2a 功能特性
提案
版本
GCC
Clang
MSVC
EDG eccp
Intel C++
IBM XLC++
Sun/Oracle C++
Embarcadero C++ Builder
Cray
Portland Group (PGI)
[折叠] 允许 lambda 捕获 [=, this]
P0409R2 c++2a-lang 8 6 5.1 __VA_OPT__
P0306R4 c++2a-lang 8 (部分)* 6 5.1 指派初始化器 P0329R4 c++2a-lang 4.7 (部分)*
83.0 (部分)* 5.1 泛型 lambda 的模板形参列表 P0428R2 c++2a-lang 8 5.1 位域的默认成员初始化器 P0683R1 c++2a-lang 8 6 5.1 类模板实参推导中的 initializer_list 构造函数 P0702R1 c++2a-lang 8 6 19.14* 5.0 const& 限定的成员指针 P0704R1 c++2a-lang 8 6 5.1 概念 (concept) P0734R0 c++2a-lang 6
(仅 TS)不求值语境中的 lambda P0315R4 c++2a-lang 9 三路比较运算符 P0515R3 c++2a-lang 8 (部分)* 19.20* 简化隐式 lambda 捕获 P0588R1 c++2a-lang 8 基于范围的 for 的初始化语句 P0614R1 c++2a-lang 9 8 可默认构造且可赋值的无状态 lambda P0624R2 c++2a-lang 9 8 5.1 与预置的复制构造函数的 const 不匹配 P0641R2 c++2a-lang 9 8 5.1 特化上的访问检查 P0692R1 c++2a-lang 是 8 (部分)* ADL 与不可见的函数模板 P0846R0 c++2a-lang 9 令 constexpr 函数的实例化较不贪婪 P0859R0 c++2a-lang 5.2 (部分)*
9属性 [[likely]]
与[[unlikely]]
P0479R5 c++2a-lang 9 5.1 使 typename
更可选P0634R3 c++2a-lang 9 Lambda 初始化捕获中的包展开 P0780R2 c++2a-lang 9 属性 [[no_unique_address]]
P0840R2 c++2a-lang 9 5.1 契约 P0542R5 c++2a-lang 销毁的 operator delete P0722R3 c++2a-lang 9 6 非类型模板形参中的类类型 P0732R2 c++2a-lang 9 explicit(bool) P0892R2 c++2a-lang 9 5.1 整合功能特性测试宏 P0941R2 c++2a-lang 5 3.4 19.15* 5.0 禁止聚合体有用户声明的构造函数 P1008R1 c++2a-lang 9 8 5.1 constexpr 虚函数 P1064R0 c++2a-lang 9 5.1 char8_t
P0482R6 c++2a-lang 9 7 std::is_constant_evaluated() P0595R2 c++2a-lang 9 constexpr try
-catch
代码块P1002R1 c++2a-lang 9 8 5.1 立即函数 P1073R3 c++2a-lang 5.1 嵌套内联命名空间 P1094R2 c++2a-lang 9 8 5.1 constexpr 的 dynamic_cast
和多态typeid
P1327R1 c++2a-lang 5.1 在 constexpr 中改变联合体的活跃成员 P1330R0 c++2a-lang 9 5.1 结构化绑定的扩展 P1091R3
P1381R1c++2a-lang 更强的 Unicode 要求 P1041R4
P1139R2c++2a-lang 是 参数化的聚合体初始化 P0960R3 c++2a-lang 模块 (module) P1103R3 c++2a-lang 8 (部分) 协程 (coroutine) P0912R5 c++2a-lang 8 (部分) std::endian P0463R1 c++2a 8 7 N/A std::remove_cvref P0550R2 c++2a 9 6 19.20* N/A 扩展 std::make_shared 以支持数组 P0674R1 c++2a N/A 原子性浮点算术 P0020R6 c++2a N/A 同步缓冲的 ostream P0053R7 c++2a N/A <algorithm> 与 <utility> 的 constexpr
P0202R3 c++2a 8 N/A <complex> 的更多 constexpr
P0415R1 c++2a 9 N/A 字符串前缀与后缀检查 P0457R2 c++2a 9 6 N/A operator<=>
的库支持 <compare>P0515R3 c++2a 7 19.20* N/A 转换指针为裸指针的工具 P0653R2 c++2a 8 6 N/A 原子性的 shared_ptr 与 weak_ptr P0718R2 c++2a N/A std::span P0122R7 c++2a 7 N/A 日历与时区 P0355R7 c++2a 7 N/A <version> P0754R2 c++2a 9 7 N/A std::atomic_ref P0019R8 c++2a N/A 整数的 2 的幂的运算 P0556R3 c++2a 9 N/A std::bit_cast() P0476R2 c++2a N/A std::destroying_delete P0722R3 c++2a 9 N/A 概念库 P0898R3 c++2a N/A 一致的容器擦除 P1209R0 c++2a 9 8 N/A C++2a 功能特性
提案
版本
GCC
Clang
MSVC
EDG eccp
Intel C++
IBM XLC++
Sun/Oracle C++
Embarcadero C++ Builder
Cray
Portland Group (PGI)
C++17 功能特性
C++17 功能特性
提案
版本
GCC
Clang
MSVC
EDG eccp
Intel C++
IBM XLC++
Sun/Oracle C++
Embarcadero C++ Builder
Cray
Portland Group (PGI)
[折叠] 直接列表初始化的新 auto 规则 N3922 c++17-lang 5 3.8 19.0* 4.10.1 17.0 17.7 无消息的 static_assert N3928 c++17-lang 6 2.5 19.10* 4.12 18.0 17.7 模板模板形参中的 typename
N4051 c++17-lang 5 3.5 19.0* 4.10.1 17.0 17.7 移除三标符 N4086 c++17-lang 5 3.5 16.0* 5.0 嵌套命名空间定义 N4230 c++17-lang 6 3.6 19.0* 4.12 17.0 17.7 命名空间和枚举项的属性 N4266 c++17-lang 4.9 (命名空间) / 6 (枚举项) 3.6 19.0* 4.11 17.0 17.7 u8
字符字面量N4267 c++17-lang 6 3.6 19.0* 4.11 17.0 17.7 允许所有非类型模板实参的常量求值 N4268 c++17-lang 6 3.6 19.12* 5.0 折叠表达式 N4295 c++17-lang 6 3.6 19.12* 4.14 19.0 18.1 移除 register 关键字的已弃用用法 P0001R1 c++17-lang 7 3.8 19.11* 4.13 18.0 17.7 移除已弃用的 operator++(bool) P0002R1 c++17-lang 7 3.8 19.11* 4.13 18.0 17.7 从 C++17 移除已弃用的异常规定 P0003R5 c++17-lang 7 4 19.10* 4.14 19.0 令异常规定为类型系统的一部分 P0012R1 c++17-lang 7 4 19.12* 4.14 19.0 有基类的类的聚合初始化 P0017R1 c++17-lang 7 3.9 19.14* 5.0 *this
的 lambda 捕获P0018R3 c++17-lang 7 3.9 19.11* 4.14 19.0 18.1 使用属性命名空间而不重复 P0028R4 c++17-lang 7 3.9 19.11* 4.13 18.0 17.7 过对齐数据的动态内存分配 P0035R4 c++17-lang 7 4 19.12* 4.14 一元折叠表达式和空形参包 P0036R0 c++17-lang 6 3.9 19.12* 4.14 预处理器条件中的 __has_include P0061R1 c++17-lang 5 是 19.11* 4.13 18.0 17.7 类模板实参推导 P0091R3 c++17-lang 7 5 19.14* 5.0 19.1 具有 auto
类型的非类型模板形参P0127R2 c++17-lang 7 4 19.14* 5.0 19.1 有保证的复制消除 P0135R1 c++17-lang 7 4 19.13* 5.0 19.1 继承构造函数的新规定 (DR1941 等) P0136R1 c++17-lang 7 3.9 19.14* 替换含引用成员的类对象 P0137R1 c++17-lang 7 6 19.14* 5.0 枚举的直接列表初始化 P0138R2 c++17-lang 7 3.9 19.11* 4.14 18.0 更严格的表达式求值顺序 P0145R3 c++17-lang 7 4 19.14* 5.0 constexpr lambda 表达式 P0170R1 c++17-lang 7 5 19.11* 4.14 19.0 18.1 基于范围 for 的相异 begin 和 end 类型 P0184R0 c++17-lang 6 3.9 19.10* 4.12 18.0 17.7 [[fallthrough]]
属性P0188R1 c++17-lang 7 3.9 19.10* 4.13 18.0 17.7 [[nodiscard]]
属性P0189R1 c++17-lang 7 3.9 19.11* 4.13 18.0 17.7 using 声明中的包展开 P0195R2 c++17-lang 7 4 19.14* 5.0 [[maybe_unused]]
属性P0212R1 c++17-lang 7 3.9 19.11* 4.13 18.0 17.7 结构化绑定 P0217R3 c++17-lang 7 4 19.11* 4.14 19.0 18.1 十六进制浮点字面量 P0245R1 c++17-lang 3.0 是 19.11* 4.13 18.0 17.7 忽略未知属性 P0283R2 c++17-lang 是 3.9 19.11* 4.13 18.0 17.7 constexpr if 语句 P0292R2 c++17-lang 7 3.9 19.11* 4.14 19.0 18.1 if 和 switch 的初始化语句 P0305R1 c++17-lang 7 3.9 19.11* 4.14 18.0 18.1 内联变量 P0386R2 c++17-lang 7 3.9* 19.12* 4.14 19.0 18.1 DR :模板模板实参的匹配排除了兼容的模板 P0522R0 c++17-lang 7 4 19.12* 5.0 std::uncaught_exceptions N4259 c++17 6 3.7 19.0* N/A N/A N/A 改进 std::pair 和 std::tuple N4387 c++17 6 4 19.0* N/A N/A N/A std::any P0220R1 c++17 7 4 19.10* N/A N/A N/A std::variant P0088R3 c++17 7 4 19.10* N/A N/A N/A std::optional P0220R1 c++17 7 4 19.10* N/A N/A N/A std::shared_mutex (无时限) N4508 c++17 6 3.7 19.0* N/A N/A N/A std::string_view N3921 c++17 7 4 19.10* N/A N/A N/A 并行 TS 的标准化 P0024R2 c++17 19.14*
(部分)N/A 18.0* N/A C++17 应当指代 C11 而不是 C99 P0063R3 c++17 9 7 19.0*
(部分)*N/A N/A N/A 初等字符串转换 P0067R5 c++17 8 (无浮点) 19.14*(无浮点)
19.15*N/A N/A N/A 数学特殊函数 P0226R1 c++17 7 19.14* N/A N/A N/A 接合 map 和 set P0083R3 c++17 7 8 19.12* N/A N/A N/A 硬件干涉大小 P0154R1 c++17 19.11* N/A N/A N/A std::filesystem P0218R1 c++17 8 7 19.14* N/A N/A N/A std::byte P0298R3 c++17 7 5 19.11* N/A N/A N/A C++17 功能特性
提案
版本
GCC
Clang
MSVC
EDG eccp
Intel C++
IBM XLC++
Sun/Oracle C++
Embarcadero C++ Builder
Cray
Portland Group (PGI)
C++14 功能特性
C++14 功能特性
提案
版本
GCC
Clang
MSVC
EDG eccp
Intel C++
IBM XLC++
Sun/Oracle C++
Embarcadero C++ Builder
Cray
Portland Group (PGI)
[折叠] 按语境转换的遣词调整 N3323 c++14-lang 4.9 3.4 18.0* 4.9 16.0 13.1.2* 5.15 8.6 16.1 二进制字面量 N3472 c++14-lang 4.3/4.9 2.9 19.0* 4.10 11.0 13.1.2* 5.14 8.6 2015 decltype(auto) ,普通函数的返回类型推导 N3638 c++14-lang 4.8/4.9 3.3/3.4 19.0* 4.9 15.0 13.1.2* 5.15 8.6 16.1 带初始化/泛化的 lambda 捕获 (init-capture) N3648 c++14-lang 4.5/4.9 3.4 19.0* 4.10 15.0 5.15 8.6 16.1 泛型(多态) lambda 表达式 N3649 c++14-lang 4.9 3.4 19.0* 4.10 16.0 13.1.2* 5.15 8.6 16.1 变量模板 N3651 c++14-lang 5 3.4 19.0* 4.11 17.0 13.1.2* 5.15 8.6 17.4 扩展的 constexpr N3652 c++14-lang 5 3.4 19.10* 4.11 17.0 13.1.2* 5.15 8.6 17.4 成员初始化器与聚合体 (NSDMI) N3653 c++14-lang 5 3.3 19.10* 4.9 16.0 5.14 8.6 16.1 澄清内存分配(分配的免除/融合) N3664 c++14-lang N/A 3.4 N/A N/A N/A 8.6 17.4 [[deprecated]]
属性N3760 c++14-lang 4.9 3.4 19.0* 4.9 15.0*
16.013.1.2* 5.14 8.6 16.1 具大小解分配 N3778 c++14-lang 5 3.4 19.0* 4.10.1 17.0 5.14 8.6 16.1 单引号作为数位分隔符 N3781 c++14-lang 4.9 3.4 19.0* 4.10 16.0 13.1.2* 5.14 8.6 2015 std::result_of 与 SFINAE N3462 c++14 5 是 19.0* N/A N/A 5.15 是 8.6 N/A <complex> 的 constexpr
N3302 c++14 5 3.4 19.0* N/A N/A 5.15 8.6 N/A <chrono> 的 constexpr
N3469 c++14 5 3.4 19.0* N/A N/A 5.15 8.6 N/A <array> 的 constexpr
N3470 c++14 5 3.4 19.0* N/A N/A 5.15 8.6 N/A <initializer_list> 、 <utility> 和 <tuple> 的 constexpr
N3471 c++14 5 3.4 19.0* N/A N/A 5.15 8.6 N/A 改进的 std::integral_constant N3545 c++14 5 3.4 19.0* N/A N/A 5.15 8.6 N/A <chrono> 和 <string> 的用户定义字面量 N3642 c++14 5 3.4 19.0* N/A N/A 5.15 8.6 N/A 空向前迭代器 N3644 c++14 5* 3.4 19.0* N/A N/A 5.15 8.6 N/A std::quoted N3654 c++14 5 3.4 19.0* N/A N/A 5.15 8.6 N/A 异质关联查找 N3657 c++14 5 3.4 19.0* N/A N/A 5.15 8.6 N/A std::integer_sequence N3658 c++14 5 3.4 19.0* N/A N/A 5.15 8.6 N/A std::shared_timed_mutex N3659 c++14 5 3.4 19.0* N/A N/A 5.15 8.6 N/A std::exchange N3668 c++14 5 3.4 19.0* N/A N/A 5.15 8.6 N/A 修正无 const
的constexpr
成员函数N3669 c++14 5 3.4 19.0* N/A N/A 5.15 8.6 N/A std::get<T>() N3670 c++14 5 3.4 19.0* N/A N/A 5.15 8.6 N/A 双范围的 std::equal 、 std::is_permutation 、 std::mismatch N3671 c++14 5 3.4 19.0* N/A N/A 5.15 8.6 N/A C++14 功能特性
提案
版本
GCC
Clang
MSVC
EDG eccp
Intel C++
IBM XLC++
Sun/Oracle C++
Embarcadero C++ Builder
Cray
Portland Group (PGI)
C++11 功能特性
C++11 功能特性
提案
版本
GCC
Clang
MSVC
EDG eccp
Intel C++
IBM XLC++
Sun/Oracle C++
Embarcadero C++ Builder
Cray
Portland Group (PGI)
HP aCC
Digital Mars C++
[折叠] alignas N2341 c++11 4.8 3.0 19.0* 4.8 15.0 13.1.2* 5.13 是 8.6 2015 alignof N2341 c++11 4.5 2.9 19.0* 4.8 15.0 13.1.2* 5.13 是 8.4 2015 原子操作 N2427 c++11 4.4 3.1 17.0* Yes 13.0 13.1.2* 5.14 是 8.4 2015 auto N1984(v1.0) c++11 4.4(v1.0) 是 16.0* 3.9 11.0(v0.9)
12.0(v1.0)11.1(v1.0) 5.13 是 8.4 2015 A.06.25 C99 预处理器 N1653 c++11 4.3 是 19.0*
(部分:变参宏有漏洞)4.1 11.1 10.1 5.9 是 8.4 2015 A.06.25 是 constexpr N2235 c++11 4.6 3.1 19.0*
(部分)4.6 13.0*
14.012.1*
13.15.13 是 8.4 2015 A.06.28 decltype v1.0: N2343 v1.1: N3276
c++11 4.3(v1.0)
4.8.1(v1.1)2.9 16.0* 4.2(v1.0)
4.8(v1.1)11.0(v1.0)
12.0(v1.1)11.1(v1.0) 5.13 是 8.4 2015 A.06.25 8.52(v1.0) 预置和弃置的函数 N2346 c++11 4.4 3.0 18.0* 4.1 12.0 13.1 5.13 是 8.4 2015 A.06.25 委托构造函数 N1986 c++11 4.7 3.0 18.0* 4.7 14.0 11.1 5.13 是 8.4 2015 A.06.28 显式转换运算符 N2437 c++11 4.5 3.0 18.0* 4.4 13.0 12.1 5.13 是 8.4 2015 A.06.27 扩展的 friend 声明 N1791 c++11 4.7 2.9 16.0*
(部分)
18.0*4.1 11.1*
12.011.1 5.13 是 8.4 2015 A.06.25 extern template N1987 c++11 3.3 是 12.0* 3.9 9.0 11.1 5.13 是 8.4 2015 A.06.25 前置 enum 声明 N2764 c++11 4.6 3.1 17.0* 4.5 11.1*
14.012.1 5.13 是 8.4 2015 继承的构造函数 N2540 c++11 4.8 3.3 19.0* 4.8 15.0 13.1.1* 5.13 是 8.4 2015 初始化器列表 N2672 c++11 4.4 3.1 18.0* 4.5 13.0*
14.013.1.2* 5.13 是 8.4 2015 A.06.28 Lambda 表达式 v0.9: N2550 c++11 4.5(v1.1) 3.1 16.0*(v1.0)
17.0*(v1.1)4.1(v1.1) 12.0(v1.1) 13.1.2* 5.13 是 8.4 2015 A.06.25 局部及无名类型作为模板形参 N2657 c++11 4.5 2.9 16.0* 4.2 12.0 13.1.2* 5.13 是 8.4 2015 A.06.27 long long N1811 c++11 是 是 14.0* 是 是 是 是 是 8.4 2015 是 是 内联命名空间 N2535 c++11 4.4 2.9 19.0* 4.5 14.0 11.1 5.13 是 8.4 2015 A.06.28 新字符类型 N2249 c++11 4.4 2.9 19.0* 4.4 12.1*
14.013.1.1* 5.13 是 8.4 2015 A.06.27 8.52 尾随的函数返回类型 N2541 c++11 4.4 2.9 16.0* 4.1 12.0 12.1 5.13 是 8.4 2015 A.06.27 nullptr N2431 c++11 4.6 2.9 16.0* 4.2 12.1 13.1 5.13 是 8.4 2015 A.06.27 8.52 Unicode 字符串字面量 N2442 c++11 4.4 3.0 19.0* 4.7 11.0* 10.1*
13.1.1*5.7 是 8.4 2015 A.06.28 8.52 原始字符串字面量 N2442 c++11 4.5 是 18.0* 4.7 14.0 13.1.1* 5.13 是 8.4 2015 A.06.28 8.52 用户定义字面量 N2765 c++11 4.7 3.1 19.0* 4.8 15.0 13.1.2* 5.14 是 8.4 2015 右角括号 N1757 c++11 4.3 是 14.0* 4.1 11.0 12.1 5.13 是 8.4 2015 右值引用 v1.0: N2118 c++11 4.3(v1.0)
4.5(v2.1)
4.6(v3.0)是 16.0*(v2.0)
17.0*(v2.1)
19.0*(v3.0)4.5(v3.0) 11.1(v1.0)
12.0(v2.0)
14.0(v3.0)12.1(v2.1) 5.13 是 8.4 2015 A.06.25 static_assert N1720 c++11 4.3 2.9 16.0* 4.1 11.0 11.1 5.13 是 8.4 2015 A.06.25 8.52 强类型 enum N2347 c++11 4.4 2.9 17.0* 4.0 13.0 12.1 5.13 是 8.4 2015 A.06.25 模板别名 N2258 c++11 4.7 3.0 18.0* 4.2 12.1 13.1.1* 5.13 是 8.4 2015 A.06.27 线程局域存储 N2659 c++11 4.4*
4.83.3*
3.316.0*
(部分)
19.0*4.8 11.1*
15.0*10.1*
13.1.2*5.9* 是 8.4 2015 8.52* 无限制的联合体 N2544 c++11 4.6 3.0 19.0* 4.6 14.0* 13.1.2* 5.13 是 8.4 2015 A.06.28 类型特征 N1836 c++11 4.3 3.0 14.0* 4.0 10.0 13.1.3 5.13 是 8.4 2015 6.16 变参模板 v0.9: N2242 v1.0: N2555
c++11 4.3(v0.9)
4.4(v1.0)2.9(v1.0) 18.0* 4.3(v0.9)
4.3(v1.0)12.1(v1.0) 11.1(v0.9) 5.13 是 8.4 2015 A.06.27 范围 for 循环 N2930 c++11 4.6 3.0 17.0* 4.5 13.0 13.1.2* 5.13 是 8.4 2015 A.06.28 override 与 final v0.8: N2928 c++11 4.7 2.9 14.0* (部分)
17.0*4.8(v1.0) 12.0(v0.8)
14.0(v1.0)13.1.1* 5.13 是 8.4 2015 属性 N2761 c++11 4.8 3.3 19.0* 4.2 12.1 13.1.1* 5.13 是 8.4 2015 A.06.27 引用限定符 N2439 c++11 4.8.1 2.9 19.0* 4.7 14.0 13.1.2* 5.13 是 8.4 2015 A.06.28 非静态数据成员初始化器 N2756 c++11 4.7 3.0 18.0* 4.6 14.0 13.1.2* 5.13 是 8.4 2015 A.06.28 有并发的动态初始化及析构(魔法静态变量) N2660 c++11 4.3 2.9 19.0* 是 11.1* 13.1.2* 5.13 是 8.4 2015 A.06.25 noexcept N3050 c++11 4.6 3.0 19.0* 4.5 14.0 13.1.1* 5.13 是 8.4 2015 A.06.28 垃圾收集与基于可达性的泄漏检测 N2670 c++11 垃圾收集与基于可达性的泄漏检测(库支持) N2670 c++11 6
(无操作)3.4
(无操作)19.0*
(无操作)N/A N/A N/A 金额、时间及十六进制浮点 I/O 操纵符 时间: N2071 金额: N2072
c++11 5 3.8 19.0* N/A N/A 5.15 N/A C++11 功能特性
提案
版本
GCC
Clang
MSVC
EDG eccp
Intel C++
IBM XLC++
Sun/Oracle C++
Embarcadero C++ Builder
Cray
Portland Group (PGI)
HP aCC
Digital Mars C++
引用
各编译器厂商的兼容性检查单文档(这些通常比以上表格更能反映最新的情况)
- GCC (更新于 2019-01 )
- C++11 核心语言支持状况( 4.8.1 起完成,除了无编译器实现的 n2670 )
- C++14 核心语言支持状况( 5.1 起完成)
- C++17 核心语言支持状况( 7.1 起完成)
- C++20 核心语言支持状况
- C++11 库支持状况( 5.1 起完成)
- C++14 库支持状况( 5.1 起完成)
- C++17 库支持状况
- C++20 库支持状况
- 技术规范支持状况
- Clang++ (更新于 2017-09 )
- C++11 核心语言支持状况( 3.3 起完成)
- C++11 库支持状况( 2012-07-29 起完成)
- C++14 核心语言支持状况( 3.4 起完成)
- C++14 库支持状况( 3.5 起完成)
- 技术规范支持状况
- C++17 核心语言支持状况( 5.0 起完成)
- C++17 库支持状况
- C++20 核心语言支持状况
- C++20 库支持状况
- 核心语言缺陷报告状况
- Microsoft Visual Studio (更新于 2019-01 )
- C++17 宣告: MSVC 遵从 C++ 标准( 15.7 起完成)
- C++17 VS 2017 15.5 中的功能特性及 STL 修正
- C++17 VS 2017 15.3 中的功能特性和 STL 修正
- C++11/C++14/C++17 VS2017.3 中的核心语言和库状况
- C++11/C++14/C++17 核心语言支持状况
- VS2010 、 VS2012 、 VS2013 和 VS2015 中的 C++11/14/17 核心语言支持状况
- VS2013 vs. VS2015 CTP0
- VS2013 vs. VS2015 CTP1
- VS2013 vs. VS2015 CTP3 (包含路线图表格)
- VS2015 ("VS14") 预览
- VS2015 ("VS14") 发行候选 ( C++11 仍不完整,但出现 C++17 支持)
- VS2017
- C++11 和 C++14 库支持状况
- C++11/14/17 VS 2015 RTM 中的功能特性包含核心语言与标准库(包含技术规范)
- VS 2015 Update 2 标准库中的 C++14/17 功能特性 库对于当前 C++17 特性完整,有少量问题(一些缺陷报告、一些 constexpr 等)
- VS “15” Preview 5 中的 C++14/17 功能特性和 STL 修正包含详细的 C++17 状况表格
- Intel C++ (更新于 2017-11 )
- C++11 核心语言支持状况( 15.0 起完全支持)
- C++14 核心语言支持状况( 17.0 起功能完整, N3664 是一项优化)
- C++17 核心语言支持状况(不完全支持)
- Intel 19.0 beta 的 C++17 特性
- Intel 不提供 C++ 标准库的实现,除了
- 并行 STL ( C++17 带执行策略支持的标准库算法的实现)
- EDG (更新于 2019-03 )
- C++11 核心语言支持状况
- C++14 核心语言支持状况
- C++17 核心语言支持状况
- C++20 核心语言支持状况
- EDG 不提供 C++ 标准库的实现
- Oracle C++ (2017-07 更新)
- 版本号为编译器版本而非 Oracle Studio 版本
- C++11 核心语言支持状况
- 5.15 中添加了完整 C++14 支持。
- Oracle 提供对标准库的四种不同实现:
- libCstd (RogueWave Standard Library version 2), 早于 C++98
- stlport4 (STLport Standard Library version 4.5.3), 早于 C++03
- stdcxx4 (Apache Standard Library version 4), 早于 C++11
- libstdc++ (GCC runtime library, 根据不同发布版本对 C++11 和 C++14 有所支持)
- IBM XL C++ (更新于 2018-05 )
- IBM XL C++ for Linux
- 核心语言支持状况: 13.1.6 起 C++11 完整, 16.1.0 中部分 C++14
- IBM 在 Linux 上不提供 C++ 标准库实现(使用 GNU libstdc++ )
- IBM XL C++ for AIX
- 核心语言支持状况: 13.1.3 中部分支持 C++11 。
- IBM 为 AIX 提供一个 Dinkumware 库的版本,带 C++ TR1 的完整支持,包括 <regex> ,但不支持 C++11
- HP aCC
- HP aC++ A.06.28 发行注记 (包括 C++11 核心语言功能特性)
- HP 提供了 RogueWave STL 2.0 对 C++98 标准库的实现的一个版本
- Digital Mars C++
- Embarcadero C++
- 语言功能特性遵从状况 (RAD Studio 10.1 Berlin) ,包括老式编译器与 Clang 增强编译器(基于 Clang 3.3 )所支持的 C++11 功能特性
- 语言功能特性遵从状况 (RAD Studio 10.3 Rio) ,包括老式编译器所支持的 C++11 功能特性,和 Clang 增强编译器(基于 Clang 5.0 )所支持的 C++11、 C++14 及 C++17 功能特性
- Cray (更新于 2018-01 )
- [1] 声称 8.4 版支持除 alignas 外的全部 C++14
- Cray C 与 C++ 参考手册 (8.6) 对于版本 8.6 ,声称支持全部 C++14
- Portland Group (PGI) (更新于 2019-01 )
- 2016 版发行注记 声称支持 C++14,但不支持“通用化的 constexpr 以及 constexpr 成员函数和隐含的 const, 变量模板,厘清内存分配(分配的合并)”
- 2018 版发行注记
- PGI 19.1 参考手册
- PGI 不提供 C++ 标准库的实现
- Texas Instruments (更新于 2018-05 )
- cl430 版本 v18.1.0 声称 C++14 支持
- Analog Devices (更新于 2018-05 )
- CrossCore Embedded Studio 2.8.0 for SHARC 声称 C++11 支持。
-
C++0x 和 C++11的区别
2020-03-30 11:17:03The old -std=c++0x is only needed for older compiler versions that did not support -std=c++11 and they chose that name to express the preliminary and unstable nature of features (and the ABI) of the t... -
异常规范 C++11
2021-02-20 14:22:19异常规范 C++11 noexcept throw -
【C++】C++11读取写入文件
2020-02-26 20:35:55参考链接: 1、https://www.w3cschool.cn/cpp/cpp-files-streams.html 2、https://blog.csdn.net/jllongbell/article/details/79087281 3、https://blog.csdn.net/buknow/article/details/87973205 ... -
VS2017如何设置C++11?
2021-01-25 16:50:47【问题】:VS2017如何设置C++11,C++14等不同的标准? 【解决方法】: 1、查看正在使用中的C++标准。 cout << __cplusplus << endl; 我这里显示的初始标准是199711L 2、更改使用新标准 【右击项目】–... -
Dev C++添加C++11标准
2019-04-12 19:53:36Dev C++添加C++11标准 首先确保Dev C++版本是最新的5.11版 不用C++11标准的语法去运行大多数时候会warning,但是,有时候可能会报错,比如说,不能使用stoll函数,Lambda表达式等等 可以点击菜单栏的“工具”-》... -
Qt实用技巧:Qt中添加对C++11标准的支持(两种方式)
2021-03-25 14:44:41;Qt中对智能指针的支持,是c++11标准新增的。如何在QtCreator中添加对C++11标准的支持 -
C++ 11初始化vector方法
2019-05-15 17:40:04// C++11 之前通常采用 vector<int> daysInMonth(12); //定义size 为12 daysInMonth[0] = 1; daysInMonth[1] = 2; daysInMonth[2] = 3; daysInMonth[3] = 4; daysInMonth[4] = 5; daysInMonth[5] = 6; ... -
makefile如何添加c++11标准?
2020-06-12 10:14:24在使用G++编译单个文件时,如果需要c++11标准的支持,直接在编译命令添加-std=c++11。 但是,如果是多个文件联合编译时,使用makefile文件,怎么添加c++11标准? 两种方式: 1)在makefile文件中的每个g++命令中加上... -
C++11 文件操作(2)写文件ofstream
2021-02-27 19:42:55xxx -
c++11/14/17标准你了解多少
2018-09-09 23:08:54本文就带你一探c++11新标准。官网链接:https://msdn.microsoft.com/zh-cn/library/hh567368.aspx#featurelist C++11 功能列表 C++11 核心语言功能表 C++11 核心语言功能表:并发 C++11 ... -
C++11——字符串分割
2019-02-20 11:15:49字符串分割代码示例如下,很显然, 使用了C++11 特性,代码简洁好多 #include <iostream> #include <string> #include <vector> #include <regex> ... -
DevC++ 上的ISO C++ 11开关,使用C++ 11新特性
2018-05-14 20:14:22用DevC++ 运行C++ 程序时,出现如下错误error This file requires compiler and library support for the ISO ... This support is currently experimental, and must be enabled with the -std=c++11 or -std=gn... -
C++11编译问题:warning: ISO C++11 does not allow conversion from string literal to 'char *'
2020-02-07 22:42:59在新写的采用C++11标准的编译器里,进行编译以后,原来没有任何提示的语句,竟然出现如下问题: char *pName = "NULL"; warning: ISO C++11 does not allow conversion from string literal to 'char *' 我虽然... -
解决 VSCode 编写 C++11 代码报红问题
2021-02-09 10:55:50今天在写 C++ 代码的时候用上 C++11 的特性,然后发现 VSCode 虽然可以编译通过,但是会在相应位置报红…… -
C++11: 线程的暂停和继续和停止
2020-03-18 14:33:43当我们执行一个如图片处理视频处理等费时费CPU的操作时,很多时候是将其移到一个线程,并监测其进度,如果这个时候我们需要提供 暂停、恢复、停止的功能,本文就用C++11来实现其功能。 C++11 提供了线程(std::thead... -
CMAKE支持c++11的两种方式
2020-12-28 16:48:46全局设置 set (CMAKE_CXX_STANDARD 11) ...CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11) CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X) if(COMPILER_SUPPORTS_CXX11) -
现代C++语言(C++11/14/17)特性总结和使用建议
2020-12-05 22:42:06在此之后,C++经过10多年又孕育出了拥有众多革命性变化的C++11标准(在标准正式发布前,被称为C++0x)。C++11包括了约140个新特性和约600个缺陷的修正。由于其变化实在太大,被很多人称为“现代C++语言”(Modern ... -
使devc++拥有c++11的功能(如何让devc++支持c++11)
2018-09-14 19:19:29为什么我的devc++不能使用c++11的一些功能,为什么不能用auto,为什么。。。其实只要加一句命令就好了,具体在哪加往下看,希望对你有帮助噢。 第一步:打开devc++ 第二步:点击工具选择编译选项 第三... -
C++11 std::this_thread::sleep_for让我睡一会再干活
2021-03-28 18:13:53我当时以为sleep会导致什么调度问题,后来上网查了下,发现原来不是,std::this_thread::sleep_for只不过是C++11 标准对各个平台的睡眠函数的封装,因为sleep是平台相关的api,它是类UNIX系统提供的,换 -
C++11文件目录操作简介
2019-03-05 16:01:13今天说一下C++11提供的文件目录操作的标准库。 头文件与命名空间: 头文件只需要#include <filesystem> 因为还没有正式进入C++11标准,目前还在TR2里面 命名空间在std::tr2::sys 路径类path... -
Visual Studio Code编译不支持C++11标准解决方法
2020-08-10 16:18:16Visual Studio Code支持C++11标准解决方法 在用vscode时经常遇到不支持c++11标准而报错的情形,看网上的博客方法大多说的是在task.json文件里改动,我自己试了半天没有成功,最后是在setting.json进行修改才通过编译... -
如何在windows下使用c++11标准 (Dev C++切换 C++ 11 环境)
2018-11-09 17:44:57安装之后需要简单设置一下。 设置方法:Tools - Compiler Options - Settings - Code Generation Lauguage standaerd(-std)选项下拉菜单中选择 GNU C++11 Dev-Cpp 5.4.2下载地址: ... -
C++ 11 中的几种锁
2019-08-27 23:16:50可以避免多个线程在某一时刻同时操作一个共享资源,标准C++库提供了std::unique_lock类模板,实现了互斥锁的RAII惯用语法: eg: std::unique_lock<std::mutex> lk(mtx_sync_); 条件锁(condition_variable) ... -
<6>C++11/C++14/C++17 视频精讲
2018-06-04 11:58:40C++11是新时代的C++亦称为modern C++,是对C++98扩展。C++11旨在手写简便与提高效率。 大量的企业级项目,己经全部用C++11改写了,比如cocos2dx游戏引擎己经全面拥抱C++11。 -
Dev-c++如何支持c++11
2018-12-02 16:31:06如果你用DEV-C++编译C++文件的时候,发现自己出错了,编译器总是告诉你什么standard,c++11的话,说明你的DEV不支持c++11特性,可以这么操作。 在Tools(工具)下面找到compiler options,也就是编译器选项,如下就...
-
<em>C语言11</em>:用P1、P0口显示除法运算结果.rar<em>C语言11</em>:用P1、P0口显示除法运算结果
-
<em>C语言</em>规范之C11标准<em>C语言</em>规范之C11标准
-
标准<em>C语言</em>指南-C11标准本书基于<em>C语言</em>的最新标准ISO/IEC 9899:2011-C11标准,力求全面地介绍这门计算机语言的各个方面:词法元素、类型、声明、表达式、语句等,全书内容按概念和术语分类组织,示
-
<em>C语言</em>中级-<em>11</em>编码规范<em>C语言</em>中级-<em>11</em>编码规范 <em>C语言</em>中级-<em>11</em>编码规范
-
<em>c语言</em>课件1-<em>11</em>章<em>c语言</em>课件 --<em>c语言</em>程序设计(第三版)