这是 C++ 中的保留字列表。因为它们为语言所用,故这些关键词不可用于重定义或重载。


    alignas (C++11 起)alignof (C++11 起)andand_eqasmatomic_cancel (TM TS)atomic_commit (TM TS)atomic_noexcept (TM TS)auto(1)bitandbitorboolbreakcasecatchcharchar8_t (C++20 起)char16_t (C++11 起)char32_t (C++11 起)class(1)complconcept (C++20 起)constconsteval (C++20 起)constexpr (C++11 起)constinit (C++20 起)const_castcontinueco_await (C++20 起)co_return (C++20 起)co_yield (C++20 起)decltype (C++11 起)

    default(1)delete(1)dodoubledynamic_castelseenumexplicitexport(1)(3) extern(1)falsefloatforfriendgotoifinline(1)intlongmutable(1)namespacenewnoexcept (C++11 起)notnot_eqnullptr (C++11 起)operatororor_eqprivateprotectedpublicreflexpr (反射 TS)

    register(2)reinterpret_castrequires (C++20 起)returnshortsignedsizeof(1)staticstatic_assert (C++11 起)static_caststruct(1)switchsynchronized (TM TS)templatethisthread_local (C++11 起)throwtruetrytypedeftypeidtypenameunionunsignedusing(1)virtualvoidvolatilewchar_twhilexorxor_eq
    • (1) - C++11 中含义改变或添加新含义。
    • (2) - C++17 中含义改变。
    • (3) - C++20 中含义改变。

    注意 andbitororxorcomplbitandand_eqor_eqxor_eqnotnot_eq(还有双标符 <%%><::>%:%:%:)提供标准记号的代用表示方法

    除了关键词外,还有拥有特殊含义的标识符,它们可用作对象或函数的名字,但在某些语境拥有特殊含义。


    override (C++11)final (C++11)import (C++20)module (C++20)transaction_safe (TM TS)transaction_safe_dynamic (TM TS)

    还有,在任何位置含双下划线 __ 的所有标识符,和以一个下划线后随一个大写字母开始的所有标识符,都始终受保留,而所有以单下划线开始的标识符,保留用作全局命名空间中的名称。更多细节见标识符

    命名空间 std 用于放置标准 C++ 库中的名称。关于向它添加名称的规则,见扩充命名空间 std


    名称 posix 保留作为未来的顶级命名空间。若程序于该命名空间声明或定义任何内容,则行为未定义。
    (C++11 起)

    预处理器在预处理指令的语境中识别下列记号:


    ifelifelseendif

    ifdefifndefdefineundef

    includelineerrorpragma

    defined__has_include (C++17 起)__has_cpp_attribute (C++20 起)

    预处理器在预处理指令的语境之外识别下列记号:


    _Pragma(C++11 起)