##### cppreference.com

##### Search

Create account

##### Namespaces

- Page
- Discussion

##### Variants

##### Views

- View
- Edit
- History

##### Actions

# C++ keywords

From cppreference.com
< cpp

This is a list of reserved keywords in C++. Since they are used by the language, these keywords are not available for re-definition or overloading.

`alignas` (since C++11) `alignof` (since C++11) `and` `and_eq` `asm` `auto`(1) `bitand` `bitor` `bool` `break` `case` `catch` `char` `char16_t` (since C++11) `char32_t` (since C++11) `class` `compl` `const` `constexpr` (since C++11) `const_cast` `continue` `decltype` (since C++11) `default`(1) `delete`(1) `do` `double` `dynamic_cast` `else` | `enum` `explicit` `export`(1) `extern` `false` `float` `for` `friend` `goto` `if` `inline` `int` `long` `mutable` `namespace` `new` `noexcept` (since C++11) `not` `not_eq` `nullptr` (since C++11) `operator` `or` `or_eq` `private` `protected` `public` `register` `reinterpret_cast` | `return` `short` `signed` `sizeof` `static` `static_assert` (since C++11) `static_cast` `struct` `switch` `template` `this` `thread_local` (since C++11) `throw` `true` `try` `typedef` `typeid` `typename` `union` `unsigned` `using`(1) `virtual` `void` `volatile` `wchar_t` `while` `xor` `xor_eq`

- (1) - meaning changed in C++11

Note that `and`, `bitor`, `or`, `xor`, `compl`, `bitand`, `and_eq`, `or_eq`, `xor_eq`, `not`, and `not_eq` (along with the digraphs `<%`, `%>`, `<:`, `:>`, `%:`, and `%:%:`) provide an alternative way to represent standard tokens.

In addition to keywords, there are two identifiers with special meaning, which may be used as names of objects or functions, but have special meaning in certain contexts.

`override` (C++11) `final` (C++11)

Also, each name that contains a double underscore __ or begins with an underscore followed by an uppercase letter is always reserved to the implementation and should not be used as an identifier.

Each name that begins with an underscore is reserved to the implementation for use as a name in the global namespace; such names may be used as identifiers in user-defined namespaces, as names of class members, etc.

| This section is incomplete Reason: +other contents of C++03 17.4.3.1 [lib.reserved.names] & C++11/14 17.6.4.3 [reserved.names]

The namespace `std` is used to place names of the standard C++ library. See Extending namespace std for the rules about adding names to it.

The name `posix` is reserved for a future top-level namespace. The behavior is undefined if a program declares or defines anything in that namespace. | (since C++11)

### [edit] See also

C documentation for C keywords

Retrieved from "http://en.cppreference.com/mwiki/index.php?title=cpp/keyword&oldid=71858"
Category:

- Todo with reason