首页
学习
活动
专区
工具
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++11、C++14、C++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 大多数语言特性。

3.3K10
  • C++ 的发展

    C++14(2014年) 2014年:C++14 发布,相较于 C++11,C++14 更像是一个小规模的优化和修复版本。...此外,还修复了一些编译器和实现中的问题。 C++14 让 C++11 中的很多新特性变得更加稳定,增加了可编程性和工具支持。 6....标准化过程:从 C++98 到 C++11,再到 C++14、C++17 和 C++20,C++ 逐渐成为一种具有广泛应用的编程语言,每个版本都带来了一些新的特性和增强,逐步适应现代软件开发的需求。...标准库改进: C++14 修复了 C++11 标准库中的一些问题,并改进了对各种常见编译器的支持。标准库中对线程、智能指针、算法等的支持变得更加稳定和高效。...C++17(也被称为C++ 2017)是C++编程语言的一个重要版本,它在C++11和C++14的基础上进行了许多改进,增强了语言特性、库功能以及编译器支持。C++17的主要亮点包括: 1.

    61710

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

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

    38410

    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行代码仍然保证不会发生复制操作.

    86020

    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++11、C++14、C++17、C++20 和 C++23 都是现代 C++ 标准,不断引入新的特性和语法糖,使得 C++...在实际开发中,使用哪个标准需要根据实际情况进行考虑。

    1.9K30

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

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

    1.8K30

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

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

    1.3K20

    c++17好用的新特性总结

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

    3.4K10

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

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

    1.3K20

    C++发展概述

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

    71410

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

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

    77120

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

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

    78020

    GCC编译器的-std选项

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

    2.7K20

    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。

    97021

    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
    领券