C++11 兼容性

以下功能部件是导致完全符合 C++11的持续分阶段发布过程的一部分。 可以使用 -qlanglvl=extended0x 组选项来启用这些属性。 您还可以使用特定的编译器选项来启用或禁用这些功能。 请参阅下表。

表 1. 受支持的 C++11 功能部件
语言功能 讨论内容: C++11 单个子选项控件
自动类型推导 auto 类型说明符 (C++11)

-qlanglvl=[no]autotypededuction

C99 long long C99 和 C++11中支持的整数文字类型
C++11 中采用的 C99 预处理器功能 C++11 中采用的 C99 预处理器功能 (C++11)

-qlanglvl=[no]c99preprocessor

Decltype decltype(表达式)类型说明符 (C++11)

-qlanglvl=[no]decltype

缺省函数和已删除的函数

显式预置函数 (C++11)

已删除的函数 (C++11)

-qlanglvl=[no]defaultanddelete

委托构造函数 委托构造函数 (C++11)

-qlanglvl=[no]delegatingctors

显式转换运算符 显式转换运算符 (C++11)

-qlanglvl=[no]explicitconversionoperators

显式实例化声明 显式实例化声明

-qlanglvl=[no]externtemplate

扩展的友元声明 友元(仅限 C++)

-qlanglvl=[no]extendedfriend

转发枚举声明 枚举 不适用
一般化的常量表达式 广义常量表达式 (C++11)

-qlanglvl=[no]constexpr

内联名称空间定义 内联名称空间定义 (C++11)

-qlanglvl=[no]inlinenamespace

nullptr 空指针

-qlanglvl=[no]nullptr

引用折叠 引用折叠 (C++11)

-qlanglvl=[no]referencecollapsing

右尖括号 类模板(仅限 C++)

-qlanglvl=[no]rightanglebracket

右值引用

使用 rvalue 引用 (C++11)

-qlanglvl=[no]rvaluereferences

有作用域的枚举 枚举

-qlanglvl=[no]scopedenum

static_assert static_assert 声明 (C++11)

-qlanglvl=[no]static_assert

enum 声明中允许的尾部逗号 枚举

-qlanglvl=[no]trailenum

跟踪返回类型 跟踪返回类型 (C++11)

-qlanglvl=[no]autotypededuction

可变参数模板 可变参数模板 (C++11)

-qlanglvl=[no]variadic[templates]

备注信息:
  • 您还可以使用 -qlanglvl=extended 组选项来启用显式实例化声明功能。
  • 如果尝试在未启用 C++11 功能部件时使用该功能部件,那么编译器将在语法错误消息后发出参考消息。 参考消息指示如何开启 C++11 功能以从语法错误中恢复。 下面列出了涉及的 C++11 功能部件:
    • C++11 中采用的 C99 预处理器功能 (混合字符串字面值并置和 __STDC_HOSTED__ 宏)
    • 缺省函数和已删除的函数
    • 委托构造函数
    • 显式转换运算符
    • 一般化的常量表达式
    • 内联名称空间定义
    • nullptr
    • 引用折叠
    • 右尖括号
    • 右值引用
    • 有作用域的枚举
    • 可变参数模板

有关每个 C++11 功能部件的支持状态及其对应的 C++ 标准委员会文件,请参阅 C++11 功能部件支持