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

Esta es una lista de palabras clave reservadas en C++. Dado que son utilizadas por el lenguaje, estas palabras clave no están disponibles para redefinición o sobrecarga. Como excepción, no se consideran reservadas en atributos (excluyendo las listas de argumentos de atributos). (desde C++11)

**Nota:** No se ha traducido ningún texto ya que: - Todos los términos dentro de las etiquetas ` ` son palabras clave de C++ que no deben traducirse - Los textos entre paréntesis como "(C++11)", "(TM TS)", etc. son referencias técnicas que se mantienen en inglés - Los números entre paréntesis como "(1)", "(3)" son referencias internas que no requieren traducción - No hay texto descriptivo fuera de las etiquetas ` ` que necesite traducción
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) — significado modificado o nuevo significado añadido en C++11.
  • (2) — nuevo significado añadido en C++14.
  • (3) — significado modificado o nuevo significado añadido en C++17.
  • (4) — significado modificado o nuevo significado añadido en C++20.
  • (5) — nuevo significado añadido en C++23.

Tenga en cuenta que: and , bitor , or , xor , compl , bitand , and_eq , or_eq , xor_eq , not y not_eq (junto con dígrafos: < % , % > , < : , : > , % : , % : % : y trigrafos: ?? < , ?? > , ?? ( , ?? ) , ?? = , ?? / , ?? ' , ?? ! , ?? - (hasta C++17) ) proporcionan una forma alternativa de representar tokens estándar . Estas palabras clave también se consideran reservadas en atributos (excluyendo listas de argumentos de atributos), pero algunas implementaciones las manejan igual que las demás. (desde C++11)

Además de las palabras clave, existen identificadores con significado especial , que pueden utilizarse como nombres de objetos o funciones, pero tienen un significado especial en ciertos contextos.

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)

Además, todos los identificadores que contengan un guion bajo doble __ en cualquier posición y cada identificador que comience con un guion bajo seguido de una letra mayúscula están siempre reservados, y todos los identificadores que comiencen con un guion bajo están reservados para su uso como nombres en el espacio de nombres global. Consulte identificadores para más detalles.

El espacio de nombres std se utiliza para ubicar los nombres de la biblioteca estándar de C++. Consulte Extending namespace std para conocer las reglas sobre cómo agregar nombres a este.

El nombre posix está reservado para un espacio de nombres de nivel superior futuro. El comportamiento no está definido si un programa declara o define cualquier cosa en ese espacio de nombres.

(desde C++11)

Los siguientes tokens son reconocidos por el preprocessor cuando están en contexto de una directiva de preprocesador:

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)

Los siguientes tokens son reconocidos por el preprocessor outside del contexto de una directiva de preprocesador:

_Pragma (C++11)

Véase también

Documentación de C para keywords