Namespaces
Variants

C++ keywords

From cppreference.net
C++ language
General topics
Flow control
Conditional execution statements
Iteration statements (loops)
Jump statements
Functions
Function declaration
Lambda function expression
inline specifier
Dynamic exception specifications ( until C++17* )
noexcept specifier (C++11)
Exceptions
Namespaces
Types
Specifiers
constexpr (C++11)
consteval (C++20)
constinit (C++20)
Storage duration specifiers
Initialization
Expressions
Alternative representations
Literals
Boolean - Integer - Floating-point
Character - String - nullptr (C++11)
User-defined (C++11)
Utilities
Attributes (C++11)
Types
typedef declaration
Type alias declaration (C++11)
Casts
Memory allocation
Classes
Class-specific function properties
Special member functions
Templates
Miscellaneous

Ceci est une liste de mots-clés réservés en C++. Puisqu'ils sont utilisés par le langage, ces mots-clés ne sont pas disponibles pour une redéfinition ou une surcharge. À titre d'exception, ils ne sont pas considérés comme réservés dans les attributs (à l'exclusion des listes d'arguments d'attributs). (depuis C++11)

**Note:** Aucun texte n'a été traduit car : - Tous les mots-clés C++ sont dans des balises ` ` et ne doivent pas être traduits - Les annotations de version (C++11, C++20, etc.) sont des références techniques standardisées - Les numéros entre parenthèses (1), (3), etc. sont des références techniques - Aucun autre texte libre ne nécessitait une traduction
A – C D – P R – Z

alignas (C++11)
alignof (C++11)
and
and_eq
asm
atomic_cancel (TM TS)
atomic_commit (TM TS)
atomic_noexcept (TM TS)
auto (1) (3) (4) (5)
bitand
bitor
bool
break
case
catch
char
char8_t (C++20)
char16_t (C++11)
char32_t (C++11)
class (1)
compl
concept (C++20)
const
consteval (C++20) (5)
constexpr (C++11) (3)
constinit (C++20)
const_cast
continue
contract_assert (C++26)
co_await (C++20)
co_return (C++20)
co_yield (C++20)

decltype (C++11) (2)
default (1)
delete (1)
do
double
dynamic_cast
else
enum (1)
explicit
export (1) (4)
extern (1)
false
float
for (1)
friend
goto
if (3) (5)
inline (1) (3)
int (1)
long
mutable (1)
namespace
new
noexcept (C++11)
not
not_eq
nullptr (C++11)
operator (1)
or
or_eq
private (4)
protected
public

reflexpr (reflection TS)
register (3)
reinterpret_cast
requires (C++20)
return
short
signed
sizeof (1)
static
static_assert (C++11)
static_cast
struct (1)
switch
synchronized (TM TS)
template
this (5)
thread_local (C++11)
throw (3) (4)
true
try
typedef
typeid
typename (3) (4)
union
unsigned
using (1) (4)
virtual
void
volatile
wchar_t
while
xor
xor_eq

  • (1) — signification modifiée ou nouvelle signification ajoutée en C++11.
  • (2) — nouvelle signification ajoutée en C++14.
  • (3) — signification modifiée ou nouvelle signification ajoutée en C++17.
  • (4) — signification modifiée ou nouvelle signification ajoutée en C++20.
  • (5) — nouvelle signification ajoutée en C++23.

Notez que : and , bitor , or , xor , compl , bitand , and_eq , or_eq , xor_eq , not et not_eq (ainsi que les digrammes : < % , % > , < : , : > , % : , % : % : et les trigrammes : ?? < , ?? > , ?? ( , ?? ) , ?? = , ?? / , ?? ' , ?? ! , ?? - (jusqu'en C++17) ) fournissent une manière alternative de représenter les jetons standards . Ces mots-clés sont également considérés comme réservés dans les attributs (à l'exclusion des listes d'arguments d'attributs), mais certaines implémentations les traitent de la même manière que les autres. (depuis C++11)

En plus des mots-clés, il existe des identifiants à signification spéciale , qui peuvent être utilisés comme noms d'objets ou de fonctions, mais qui ont une signification particulière dans certains contextes.

final (C++11)
override (C++11)
transaction_safe (TM TS)
transaction_safe_dynamic (TM TS)
import (C++20)
module (C++20)
pre (C++26)
post (C++26)
trivially_relocatable_if_eligible (C++26)
replaceable_if_eligible (C++26)

De plus, tous les identifiants qui contiennent un double soulignement __ à n'importe quelle position et chaque identifiant qui commence par un soulignement suivi d'une lettre majuscule sont toujours réservés, et tous les identifiants qui commencent par un soulignement sont réservés pour une utilisation comme noms dans l'espace de noms global. Voir identifiants pour plus de détails.

L'espace de noms std est utilisé pour placer les noms de la bibliothèque standard C++. Voir Extension de l'espace de noms std pour les règles concernant l'ajout de noms à celui-ci.

Le nom posix est réservé pour un futur espace de noms de premier niveau. Le comportement est indéfini si un programme déclare ou définit quoi que ce soit dans cet espace de noms.

(depuis C++11)

Les jetons suivants sont reconnus par le preprocessor dans le contexte d'une directive de préprocesseur :

if
elif
else
endif

ifdef
ifndef
elifdef (C++23)
elifndef (C++23)
define
undef

include
embed (C++26)
line

error
warning (C++23)
pragma

defined
__has_include (C++17)
__has_cpp_attribute (C++20)
__has_embed (C++26)

export (C++20)
import (C++20)
module (C++20)

Les jetons suivants sont reconnus par le préprocesseur en dehors du contexte d'une directive de préprocesseur :

_Pragma (C++11)

Voir aussi

Documentation C pour les mots-clés