break |
bool # |
class #^ |
private # |
const_cast # |
case |
char |
enum |
protected # |
dynamic_cast # |
continue |
char16_t * |
namespace # |
public # |
reinterpret_cast # |
default ^ |
char32_t * |
struct ^ |
static_cast # |
|
do |
double |
template # |
const |
|
else |
float |
typedef |
volatile |
and # |
for |
int |
typename # |
and_eq # |
|
goto |
long |
union |
constexpr * |
bitand # |
if |
short |
using #^ |
bitor # |
|
return |
signed |
auto ^ |
compl # |
|
switch |
unsigned |
alignas * |
extern ^ |
not # |
while |
void |
alignof * |
mutable #^ |
not_eq # |
wchar_t # |
decltype * |
register ^^ |
or # |
|
catch # |
sizeof ^ |
static |
or_eq # |
|
throw # |
false # |
typeid # |
thread_local * |
xor # |
try # |
true # |
xor_eq # |
||
noexcept * |
delete #^ |
explicit # |
||
nullptr * |
new # |
inline #^ |
asm # |
|
static_assert * |
operator # |
virtual # |
||
this # |
||||
final ** |
export #^ |
|||
override ** |
friend # |
C++98: 74 keywords
C++11: 84 keywords + 2 identifiers with special meaning
# C++ specific, not available in C89
* Added in C++11
** Added in C++11, not keywords, but identifiers with special meaning
^ Meaning changed in C++11
^^ Meaning changed in C++17
boolean-literal: true
| false
pointer-literal: nullptr
decl-specifier: storage-class-specifier | type-specifier | function-specifier | friend
| typedef
| constexpr
storage-class-specifier: register
| static
| thread_local
| extern
| mutable
function-specifier: inline
| virtual
| explicit
type-specifier: trailing-type-specifier | class-specifier | enum-specifier
trailing-type-specifier: simple-type-specifier | elaborated-type-specifier | typename-specifier | cv-qualifier
cv-qualifier: const
| volatile
class-virt-specifier: final
| explicit
class-key: class
| struct
| union
virt-specifier: override
| final
| new
access-specifier: private
| protected
| public