`
youthie
  • 浏览: 1694 次
  • 性别: Icon_minigender_1
  • 来自: 西安
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

有关GCC4.7.0编译器对C++11(0x)标准的支持的讨论

阅读更多
近日想尝试一下C++的最新标准,于是在互联网上搜索了相关资料。
其中在开源中国社区看到了一段测试各个编译器对C++11标准支持程度的代码,链接如下:
http://my.oschina.net/u/186539/blog/58074

其中提到:
引用
//=====测试结果
测试标准:编译对测试代码不报错为支持,否则不支持
//1.Visual Studio 2010 SP1(中文旗舰版) 全部不支持
//2.MinGW 20120426 GNU GCC 4.6.2 支持前两个,不支持后两个
//(注意,编译时应该开启新特性 -std=c++0x 或者 -std=gnu++0x)
//命令: g++ TestCpp11_1.cpp -o TestCpp11_1 -std=c++0x
//3.MinGW Distro 9.0 GNU GCC 4.7.0
//   很高兴,全部支持
//  (注意,编译时应该开启新特性 -std=c++0x 或者 -std=gnu++0x)
//  命令: g++ TestCpp11_1.cpp -o TestCpp11_1 -std=c++0x
//4.Visual C++ 6.0 SP6(中文企业版) 全部不支持



本人在实际测试时,发现该段代码不能通过编译(GCC4.6和GCC4.7,即使添加-std=c++0x),
需做出以下修改:
*第27行 is_r_value(std::move<int>(i));
改为 is_r_value(std::move(i));
原因:move()函数用不到模板。

*第43行 constexpr int GetFive() {return 5;}
改为:移动到main()函数之外;
原因:函数之内不能再定义函数。   

*第47行 decltype(v[0])b;
改为 decltype(v[0])b=0;
原因:编译器要求初始化b,因为decltype(v[0])推断出的类型是const int &,是个引用类型;

以下摘自维基百科,http://en.wikipedia.org/wiki/C%2B%2B11
引用
The type denoted by decltype can be different from the type deduced by auto.
#include <vector>
int main()
{
    const std::vector<int> v(1);
    auto a = v[0];        // a has type int
    decltype(v[0]) b = 1; // b has type const int&, the return type of
                             // std::vector<int>::operator[](size_type) const
    auto c = 0;           // c has type int
    auto d = c;           // d has type int
    decltype(c) e;        // e has type int, the type of the entity named by c
    decltype((c)) f = c;  // f has type int&, because (c) is an lvalue
    decltype(0) g;        // g has type int, because 0 is an rvalue
}


BTW:读者有没有发现一些诡异的相似之处呢?
欢迎指正。
分享到:
评论

相关推荐

    gcc-4.7.0安装依赖库

    GCC 4.7.0是其一个重要的版本,引入了对C++11标准的支持。在安装GCC 4.7.0之前,我们需要确保系统已经安装了必要的依赖库,以确保编译过程顺利进行。以下是对这些依赖库的详细介绍: 1. **MPC(Multiple Precision ...

    各编译器对C++11的支持比较

    在 KlayGE 首次引入 C++11 特性之后,我顺便调研了一下个主流编译器对 C++11 的支 度,以便在下个版本中加入更多的 C++11 元素。这里还列出了在不支持的时候,可以采 的替代方案。主要参考了 C++11 Features in ...

    GCC编译器for c++

    10. **C++新特性支持**:GCC随着C++标准的更新,不断添加对新特性的支持。例如,C++11引入了智能指针、右值引用、lambda表达式等,C++14和C++17进一步增强了这些特性,GCC通过`-std`选项可以选择不同标准。 总之,...

    Keil5配置GCC编译器_Keil5配置GCC编译器_

    它默认集成了ARMCC编译器,但有时候开发者可能希望使用GCC编译器,因为GCC是开源且跨平台的,具有更广泛的社区支持和丰富的库资源。本篇文章将详细讲解如何在Keil5中配置和使用GCC编译器。 一、安装GCC编译器 首先...

    gcc 3.3 c c++ linux编译器

    随着时间的推移,GCC推出了更多新版本,支持C++11、C++14、C++17等现代标准,增加了更多优化选项,如自动并行化、循环展开等。同时,现代GCC对多核处理器的支持也更加完善,能够生成更高效的代码。 四、在Linux环境...

    离线安装GCC与GCC-C++

    而GCC-C++则是GCC中专门针对C++语言的编译器组件,它支持C++的各种特性,包括模板、异常处理、多态性等。 在离线环境下安装GCC与GCC-C++,通常是因为网络环境受限或者需要在隔离的系统中进行。以下是一个详细步骤的...

    android编译器 gcc,g++,c/c++编译器和插件

    在Android平台上,开发C/C++应用或库时,我们经常需要用到GCC(GNU Compiler Collection)和G++(GNU C++ Compiler),它们是GNU项目的一部分,提供了对C和C++语言的编译支持。随着Android NDK(Native Development ...

    GCC编译器的源代码

    GCC编译器的源代码GCC编译器的源代码GCC编译器的源代码GCC编译器的源代码GCC编译器的源代码GCC编译器的源代码GCC编译器的源代码

    GCC编译器安装步骤,大家可以参照

    GCC 编译器是目前最流行的编译器之一,支持多种编程语言,包括 C、C++、FORTRAN、JAVA、OBJC、ADA 等。本文将详细介绍 GCC 编译器的安装步骤,以 Redhat Linux 上安装 GCC 4.1.2 为例。 GCC 编译器的安装步骤可以...

    GCC编译器配置 GCC编译器配置

    ### GCC编译器配置详解 #### 一、GCC编译器简介 GCC(GNU Compiler Collection)是一套由GNU项目开发的编程语言编译器集合,主要用于C...此外,GCC还提供了丰富的文档和支持社区,帮助开发者解决各种编译相关的问题。

    arm-linux-gcc交叉编译器7.3.1

    arm-linux-gcc交叉编译器7.3.1,适用 ARM -A9 等ARMV7-32的硬件环境,在Linaro官网下载最新版。此编译器是GNU版,按照官网说法是跑应用程序,不是跑裸机,跑裸机的编译器我也上传到我的号了,可以下载

    GCC编译器中文简介

    此外,GCC还支持C++11、C++14、C++17等新标准,这些标准引入了更丰富的语言特性和库,如Lambda表达式、右值引用、类型推断等,极大地提升了C++的灵活性和效率。 对于Fortran,GCC的GFortran编译器是科学计算领域的...

    fedora14中安装arm-linux-gcc交叉编译器.pdf

    Fedora 14 中安装 arm-linux-gcc 交叉编译器 在 Fedora 14 环境中,安装 arm-linux-gcc 交叉编译器是一项重要的任务,以下是安装步骤的详细说明: 安装前的准备 在安装 arm-linux-gcc 交叉编译器之前,需要下载 ...

    arm-linux-gcc交叉编译器适用 ARMV7-32

    1. **获取编译器**:从提供的压缩包`gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabihf`中解压,这包含了一个完整的交叉编译环境。Linaro是一个开源组织,它提供了优化过的GCC版本,以提升ARM平台的性能。 2. *...

    Sales_item.h-gcc4.7.0.zip

    在GCC 4.7.0之后的版本中,`Sales_item.h`可能继续随着C++标准的发展而进化,支持更多的C++14、C++17甚至C++20特性,如变量模板、if constexpr、类模板的自动推导等,以保持与最新标准的兼容性,满足开发者的需求。...

    Windows 下的 MIPS GCC 交叉编译器

    GCC(GNU Compiler Collection)是开源的、多语言的编译器套件,支持多种架构,包括MIPS。 标题中的“Windows下的MIPS GCC交叉编译器”意味着我们将在Windows操作系统上使用GCC来编译针对MIPS架构的代码。这个环境...

    gcc编译器完全介绍中文版

    1. C语言:GCC是C语言的标准编译器,支持C99和C11标准。 2. C++:GCC也支持C++,包括C++11、C++14、C++17和C++20等新标准。 3. Objective-C:对于苹果平台的开发,GCC可以处理Objective-C代码。 4. Fortran:对于...

    gcc_c++11.tar.gz

    这个压缩包特别提到了C++11,意味着它包含了针对C++11标准的编译器版本和相关库。 【描述】中提到的各个组件是GCC和其他相关依赖库的特定版本: 1. **gcc-4.9.4**:这是GCC的一个版本,支持C++11、C++14等新标准,...

    arm-linux-gcc交叉编译器 3.4.1

    arm-linux-gcc交叉编译器,版本3.4.1,用于Linux下的ARM开发。 安装方法: 1. tar zxvf arm-linux-gcc-3.4.1.tgz -C/ 2. 编辑 ~/.bashrc ,加入 export PATH=$PATH:/usr/local/arm/3.4.1/bin 3. 验证安装 [root@...

Global site tag (gtag.js) - Google Analytics