首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

哪个版本的代码::块支持C++11、C++14和C++17编译器?

C++11、C++14和C++17是C++语言的不同版本,它们分别引入了不同的特性和改进。这些版本的代码块可以被支持相应版本的C++编译器编译。

C++11是C++语言的第一个标准化版本,引入了许多新特性,如自动类型推导、Lambda表达式、智能指针、右值引用等。它的编译器支持包括但不限于:

  1. GCC(GNU Compiler Collection):GCC是一个开源的编译器套件,支持多种编程语言,包括C++。可以使用GCC的最新版本来编译C++11代码。GCC的官方网站为:https://gcc.gnu.org/
  2. Clang:Clang是一个开源的C/C++/Objective-C编译器前端,它支持C++11特性。Clang的官方网站为:https://clang.llvm.org/
  3. Visual C++:Visual C++是微软的C++编译器,Visual Studio 2010及更高版本支持C++11特性。可以使用Visual C++来编译C++11代码。Visual Studio的官方网站为:https://visualstudio.microsoft.com/

C++14是C++11的后续版本,它在C++11的基础上进行了一些改进和修复。C++14的编译器支持包括但不限于上述提到的GCC、Clang和Visual C++。

C++17是C++14的后续版本,引入了更多的新特性和改进。C++17的编译器支持也包括上述提到的GCC、Clang和Visual C++。

需要注意的是,不同的编译器版本对C++11、C++14和C++17的支持程度可能有所不同。因此,在选择编译器时,应该确保使用的是支持相应C++版本的最新编译器版本。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Modern C++,学炸了!!

所谓现代 C++(即所谓 Modern C++)指的是 C++11 及之后版本,目前最新版本是 C++20,这期间一共有 C++11C++14C++17 三个版本。...各种技巧避坑指南书《Effective Modern C++》,这本书也不错,推荐一下: 五、常用编译器C++11/14/17 支持情况 我目前公司项目也全部使用 C++17 开发,对于...MSVC 编译器支持 C++11 新标准最低版本是VC++12(随Visual Studio 2013一起发布,Visual Studio 以下简称 VS),VS 2015 支持部分 C++14...特性,VS 2017 完美支持 C++14 部分 C++17 特性,VS 2019 完美支持 C++17 大多数语言特性。...对于 gcc/g++ 编译器支持 C++11 新标准最低版本是 gcc/g++ 4.8,支持 C++14 是 gcc/g++ 4.9,gcc/g++ 7.3 完美支持 C++17 大多数语言特性。

3K10

C++中auto关键字用法详解

C++11中,标准委员会赋予了auto全新含义即:auto不再是一个存储类型指示符,而是作为一 个新类型指示符来指示编译器,auto声明变量必须由编译器在编译时期推导而得。...return 0; } 所以auto无疑是十分不错选择 5、auto在C++14C++17更新 C++auto关键字最初在C++11中引入,主要用于自动类型推导,使编程更简洁。...在后续C++14C++17标准中,对auto使用进行了一些扩展更新,进一步提高了其灵活性功能性。...这意味着你可以在函数定义时使用auto关键字指定返回类型,编译器会根据返回语句推导出具体类型。这样做可以增加代码可读性灵活性,特别是在模板编程使用lambda表达式时。...示例: template auto add(T x, T y) { return x + y; } 泛型Lambda表达式: 虽然Lambda表达式在C++11中就已经支持

22410

C C++语言标准

其中,K&R C 已经过时,不再使用,而 ANSI C、C99、C11 C18 都是现代 C 语言标准,但在实际开发中,使用最广泛是 ANSI C C99。...C++11:也称为 C++0x,是第二个 C++ 标准,由 ISO 制定,于 2011 年发布。 C++14:是 C++11 后续版本,于 2014 年发布。...C++17:是 C++14 后续版本,于 2017 年发布。 C++20:是 C++17 后续版本,于 2020 年发布。 C++23:是 C++20 后续版本,预计于 2023 年发布。...其中,C++98 是最初 C++ 标准,但在实际开发中已经很少使用,而 C++11C++14C++17、C++20 C++23 都是现代 C++ 标准,不断引入新特性语法糖,使得 C++...在实际开发中,使用哪个标准需要根据实际情况进行考虑。

1.7K30

C++17, 语言核心层有哪些新变化?

看到一个介绍 C++17 系列博文(原文),有十来篇样子,觉得挺好,看看有时间能不能都简单翻译一下,这是第一篇~ C++11, C++14, 以及 C++17.....如果你熟悉C++,那么你一定知道 C++98(第一个C++标准) C++11 是两个非常大C++标准, 但C++14,特别是C++03则是两个小标准....那么 C++17 是大标准还是小标准呢?从我观点来看,答案其实挺简单: C++17 介于 C++14 C++11 之间,既不属于大标准也不属于小标准,至于原因,看看下面的说明吧....语言核心层 fold expressions(折叠表达式) C++11 开始支持可变参数模板(即支持任意多数量参数模板).其中任意数量模板参数保存在参数包(parameter pack)中.在C++...+17 上述代码(第4行)与之前代码一个细微差别是:在C++17中,编译器仍然可以执行一次 myVal 复制操作(也可以不执行复制),但第7行代码仍然保证不会发生复制操作.

79020

C++17常用新特性(十)---模板特性:字符串变量当做模板参数

在C++历次版本发布中,对C++模板参数标准一直保持开放态度,且对参数要求也在逐渐放宽。从C++17开始,非类型模板参数也可以在使用时定义了而不必定义在不同作用域。...对于字符串变量,使用方式之前版本并没有太大区别,都不能直接在模板类型参数中使用。...C++17除了继续遵守这个规范外,相对于之前版本它允许在实例化模板作用域内声明,然后使用。不得不说也算是一种进步了吧。...但是从C++17开始,可以在模板中使用一个返回指针函数当做实参,如下面的代码C++17版本编译器中可以通过: #include using namespace std; template...+14版本编译器中编译报错如下: 从报错信息可知,在C++17以前版本中,使用指针作为模板实参时需要对参数进行连接且不能将编译器内返回指针函数在模板实例化时进行使用。

1.5K30

c++17好用新特性总结

最近很火鸿蒙系统框架代码,很多就是基于c++做底层、运行时应用框架封装。c++11后续又有11,14,17,20等众多新版本哪个是主流?截至目前来说,c++17应该是新项目的首选。...C++14在11基础上查缺补漏,并未加入许多新特性,而C++17作为C++11第一个大版本,标志着现代C++逐渐走向成熟。...但是,C++11auto推导,往往结果与预期不同。 c++11 中为了支持统一初始化,引入了新统一初始化语法,如下所示。...+17支持在if判断语句之前增加一个初始化语句,将仅用于if语句内部变量声明在if内,有助于提升代码可读性。...需要注意是,c++17只提供了一个库级别的variant实现,没有对应模式匹配(Pattern Matching)机制,而最接近std::visit又缺少编译器优化支持,所以在c++17中std

3.1K10

C++17常用新特性(五)---强制省略拷贝或传递未实质化对象

,如果在类中禁止编译器默认生成拷贝构造移动构造函数,代码将不会被编译通过。...//代码C++14版本中编译 class MyClass { public: MyClass(){cout<<"MyClass() initialize..."...很多主流编译器在编译时已经对代码进行了优化,但是这种优化一般根据具体编译器而定,C++17后这种优化变成了一种标准。 可以返回不允许拷贝或者移动对象。...在泛型函数中使用了完美转发,具体可以参考下文: 【C++11】 改成程序性能方法--完美转发 除此之外,在C++17之后类中禁止移动构造函数默认生成在实际使用时可以正常编译运行,但是在C++17之前是编译不过...C++值类型体系可以分为三个阶段,分别是:C++11之前值类型体系,C++11后到C++17期间值类型体系以及C++17值类型体系。

1.2K20

C++发展概述

由于C++过于复杂,并且经历了长时间发展演变,目前对于C++标准支持较好主要有GNU C++Visual C++,严格来说,目前还没有一个完全支持ISO C++版本。...,让开发者更加便捷使用C++在编译期执行能力,即通过代码编译获得计算结果,学术性称为模板元编程。...这些新特性随着C++11标准发布而被正式确立下来。近年来,C++标准变更周期缩短,由C++11C++14以及最近C++17都只用了3年时间。...C++14 是对 C++11重要补充优化,是C++发展历程中一个小型版本,虽然新增内容较少,但是仍然为用户“带来了极大方便”,为实现使C++“对新手更为友好”这一目标作出努力。...到了2017年,C++迎来了C++17标准。此次对C++改进扩增,让C++变得更加容易接受便于使用了。

69810

现代C++之如何返回一个对象?

如果可能的话,我们应当尽量让我们类满足半正则这个要求。 1.返回值优化(拷贝消除) 下面编译gcc版本支持c++17gcc8.3。如果使用gcc5.5等版本结果会不同。...在 C++14 及之前确实是这样。但从 C++17 开始,对于类似于 getA_unnamed这样情况,即使对象不可拷贝、不可移动,这个对象仍然是可以被返回!...C++17 要求对于这种情况,对象必须被直接构造在目标位置上,不经过任何拷贝或移动步骤。...在 C++11 之前,返回一个本地对象意味着这个对象会被拷贝,除非编译器发现可以做返回值优化(named return value optimization,或 NRVO),能把对象直接构造到调用者栈上...从 C++11 开始,返回值优化仍可以发生,但在没有返回值优化情况下,编译器将试图把本地对象移动出去,而不是拷贝出去。

1.2K20

每个开发者都应该了解一些C++特性

像第五行这样,编译器是无法推断数据类型。 最初,auto 使用是非常受限。在之后版本中,auto 变得更加强大! ? 第 7 第 8 行中,我使用了花括号初始化。...另一种非常普遍应用是将其作为比较函数。 ? 上面的例子中有很多细节。 首先,要注意到列表初始化为你节省了多少代码。然后是通用 begin() end(),它们同样也是 C++11 中新添加。...显然,现在你可以在 if/switch 语句内初始化变量并且进行条件检查了。这对保持代码紧凑和简洁是非常有帮助。...因此如果某些操作可以让编译器来做,就可以减轻运行时负担,从而提高时间效率。 ? 上面的代码是 constexpr 一个常见例子。...从 c++17 开始,参数推断也适用于标准类模版。此前,该特性只支持函数模版。

74620

从零开始一起学习SLAM | C++新特性要不要学?

不过,大家在学校里学习书本一般比较老,主要还是C++98那些老一套。 本文所谓C++新特性是指C++11及其以后C++14C++17增加新关键字新语法特性。...其中C++11是C++98以来最重要一次变化,而其后C++14C++17是在该基础上完善补充。 那么,问题来了,如果我不想学习新特性,还是像以前那样编程可以吗?...C++11之前如果我们要定义并初始化一个新变量,必须得知道其类型并定义,这在很多时候是非常繁琐,比如迭代器使用,而C++11之后引入了自动类型推导,一个auto解决一切,不需要关心类型,编译器会帮你自动推导出类型...2、省心省力自动类型推导 C++11中引入了auto,可以用来进行自动类型推导,不用关心数据类型,编译器会帮你推导好,而且这种方式也不影响编译速度。...而且这种循环支持大部分数据类型,比如数组,容器,字符串,迭代器等等。 ?

75620

GCC编译器-std选项

GCC支持在编译时候使用-std选项来选择编译语言标准。程序本身也是在发展,不断变化。...以 C 语言为例,发展至今该编程语言已经迭代了诸多个版本,例如 C89(偶尔又称为 C90)、C94(C89 修订版)、C99、C11。...同样,C++语言也经历了很多标准变化,例如C++11C++14,以及现在最新C++20。既然语言都发展了这么多标准,GCC编译器当然也要提供一个标准开关,他就是-std选项。...对于编译 C、C++ 程序来说,借助 -std 选项即可手动控制 GCC 编译程序时所使用编译标准。 这个选项使用方式也很简单。下面就是一个例子。...g++ -Wall -std=c++17 test.c 有关这些标准可以参考如下。 ?

2.4K20

C++雾中风景12:聊聊C++中Mutex,以及拯救生产力Boost

C++标准库支持如下互斥量实现: 互斥量 版本 作用 mutex C++11 最基本互斥量 timed_mutex C++11 有超时机制互斥量 recursive_mutex C++11 可重入互斥量...recursive_timed_mutex C++11 结合 2,3 特点互斥量 shared_timed_mutex C++14 具有超时机制可共享互斥量 shared_mutex C++17...共享互斥量 由上述表格可见,C++是从14之后版本才正式支持共享互斥量,也就是实现读写锁结构。...由于笔者公司仅支持C++11版本,所以就没有办法使用共享互斥量来实现读写锁了。所以最终笔者只好求助与boost库,利用boost提供读写锁来完成了所需完成工作。...shared_mutex C++14版本之后提供了共享互斥量,它区别就在于提供更加细粒度加锁操作:lock_shared。

92921

C++雾中风景12:聊聊C++中Mutex,以及拯救生产力Boost

C++标准库支持如下互斥量实现: 互斥量 版本 作用 mutex C++11 最基本互斥量 timed_mutex C++11 有超时机制互斥量 recursive_mutex C++11 可重入互斥量...recursive_timed_mutex C++11 结合 2,3 特点互斥量 shared_timed_mutex C++14 具有超时机制可共享互斥量 shared_mutex C++17...共享互斥量 由上述表格可见,C++是从14之后版本才正式支持共享互斥量,也就是实现读写锁结构。...由于笔者公司仅支持C++11版本,所以就没有办法使用共享互斥量来实现读写锁了。所以最终笔者只好求助与boost库,利用boost提供读写锁来完成了所需完成工作。...shared_mutex C++14版本之后提供了共享互斥量,它区别就在于提供更加细粒度加锁操作:lock_shared。

1.2K41

第七章 函数

第七章 函数 函数基础 函数:封装了一段代码,可以在一次执行过程中被反复调用。...+17标准强制忽略,C++17标准之前由编译器决定 } -fno-elide-constructors忽略C++11C++17标准之前)中对复制临时对象强制忽略约束 函数传值、传址、传引用 #include...,可以为void 返回类型几种书写方法 经典方法:位于函数头前部 C++11引入方式:位于函数头后部(泛型编程成员函数编写可能会简化编写) C++14引入方式...函数重载与name mangling 编译器如何选择正确版本完成函数调用?...(表示在编译器执行,也可以在运行期执行)(C++11起)/consteval函数(C++20起)(只能在编译期执行) 内联函数展开: 1.逻辑简单函数可能会被展开 2.内联函数展开并不是简单替换

17030
领券