Skip to content

Commit 9a7331b

Browse files
feat: migrate cpp/keywords from cppref [#24] (#25)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> Co-authored-by: MicroBlock <66859419+std-microblock@users.noreply.github.com>
1 parent b61b45a commit 9a7331b

File tree

1 file changed

+53
-0
lines changed

1 file changed

+53
-0
lines changed

src/content/docs/cpp/keywords.mdx

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
---
2+
title: C++ keywords
3+
description: Auto‑generated from cppreference
4+
---
5+
6+
import { Desc, DescList, DocLink, Revision, RevisionBlock } from '@components/index';
7+
8+
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.<Revision since="C++11"> As an exception, they are not considered reserved in <DocLink src="/cpp/language/attributes">attributes</DocLink> (excluding attribute argument lists).</Revision>
9+
10+
| A – C | D – P | R – Z |
11+
| :---- | :---- | :---- |
12+
| <DocLink src="/cpp/keyword/alignas">`alignas`</DocLink> <Revision since="C++11">(C++11)</Revision><br/><DocLink src="/cpp/keyword/alignof">`alignof`</DocLink> <Revision since="C++11">(C++11)</Revision><br/><DocLink src="/cpp/keyword/and">`and`</DocLink><br/><DocLink src="/cpp/keyword/and_eq">`and_eq`</DocLink><br/><DocLink src="/cpp/keyword/asm">`asm`</DocLink><br/><DocLink src="/cpp/keyword/atomic_cancel">`atomic_cancel`</DocLink> (TM TS)<br/><DocLink src="/cpp/keyword/atomic_commit">`atomic_commit`</DocLink> (TM TS)<br/><DocLink src="/cpp/keyword/atomic_noexcept">`atomic_noexcept`</DocLink> (TM TS)<br/><DocLink src="/cpp/keyword/auto">`auto`</DocLink> (1) (3) (4) (5)<br/><DocLink src="/cpp/keyword/bitand">`bitand`</DocLink><br/><DocLink src="/cpp/keyword/bitor">`bitor`</DocLink><br/><DocLink src="/cpp/keyword/bool">`bool`</DocLink><br/><DocLink src="/cpp/keyword/break">`break`</DocLink><br/><DocLink src="/cpp/keyword/case">`case`</DocLink><br/><DocLink src="/cpp/keyword/catch">`catch`</DocLink><br/><DocLink src="/cpp/keyword/char">`char`</DocLink><br/><DocLink src="/cpp/keyword/char8_t">`char8_t`</DocLink> <Revision since="C++20">(C++20)</Revision><br/><DocLink src="/cpp/keyword/char16_t">`char16_t`</DocLink> <Revision since="C++11">(C++11)</Revision><br/><DocLink src="/cpp/keyword/char32_t">`char32_t`</DocLink> <Revision since="C++11">(C++11)</Revision><br/><DocLink src="/cpp/keyword/class">`class`</DocLink> (1)<br/><DocLink src="/cpp/keyword/compl">`compl`</DocLink><br/><DocLink src="/cpp/keyword/concept">`concept`</DocLink> <Revision since="C++20">(C++20)</Revision><br/><DocLink src="/cpp/keyword/const">`const`</DocLink><br/><DocLink src="/cpp/keyword/consteval">`consteval`</DocLink> <Revision since="C++20">(C++20)</Revision> (5)<br/><DocLink src="/cpp/keyword/constexpr">`constexpr`</DocLink> <Revision since="C++11">(C++11)</Revision> (3)<br/><DocLink src="/cpp/keyword/constinit">`constinit`</DocLink> <Revision since="C++20">(C++20)</Revision><br/><DocLink src="/cpp/keyword/const_cast">`const_cast`</DocLink><br/><DocLink src="/cpp/keyword/continue">`continue`</DocLink><br/><DocLink src="/cpp/keyword/contract_assert">`contract_assert`</DocLink> <Revision since="C++26">(C++26)</Revision><br/><DocLink src="/cpp/keyword/co_await">`co_await`</DocLink> <Revision since="C++20">(C++20)</Revision><br/><DocLink src="/cpp/keyword/co_return">`co_return`</DocLink> <Revision since="C++20">(C++20)</Revision><br/><DocLink src="/cpp/keyword/co_yield">`co_yield`</DocLink> <Revision since="C++20">(C++20)</Revision><br/> | <DocLink src="/cpp/keyword/decltype">`decltype`</DocLink> <Revision since="C++11">(C++11)</Revision> (2)<br/><DocLink src="/cpp/keyword/default">`default`</DocLink> (1)<br/><DocLink src="/cpp/keyword/delete">`delete`</DocLink> (1)<br/><DocLink src="/cpp/keyword/do">`do`</DocLink><br/><DocLink src="/cpp/keyword/double">`double`</DocLink><br/><DocLink src="/cpp/keyword/dynamic_cast">`dynamic_cast`</DocLink><br/><DocLink src="/cpp/keyword/else">`else`</DocLink><br/><DocLink src="/cpp/keyword/enum">`enum`</DocLink> (1)<br/><DocLink src="/cpp/keyword/explicit">`explicit`</DocLink><br/><DocLink src="/cpp/keyword/export">`export`</DocLink> (1) (4)<br/><DocLink src="/cpp/keyword/extern">`extern`</DocLink> (1)<br/><DocLink src="/cpp/keyword/false">`false`</DocLink><br/><DocLink src="/cpp/keyword/float">`float`</DocLink><br/><DocLink src="/cpp/keyword/for">`for`</DocLink> (1)<br/><DocLink src="/cpp/keyword/friend">`friend`</DocLink><br/><DocLink src="/cpp/keyword/goto">`goto`</DocLink><br/><DocLink src="/cpp/keyword/if">`if`</DocLink> (3) (5)<br/><DocLink src="/cpp/keyword/inline">`inline`</DocLink> (1) (3)<br/><DocLink src="/cpp/keyword/int">`int`</DocLink> (1)<br/><DocLink src="/cpp/keyword/long">`long`</DocLink><br/><DocLink src="/cpp/keyword/mutable">`mutable`</DocLink> (1)<br/><DocLink src="/cpp/keyword/namespace">`namespace`</DocLink><br/><DocLink src="/cpp/keyword/new">`new`</DocLink><br/><DocLink src="/cpp/keyword/noexcept">`noexcept`</DocLink> <Revision since="C++11">(C++11)</Revision><br/><DocLink src="/cpp/keyword/not">`not`</DocLink><br/><DocLink src="/cpp/keyword/not_eq">`not_eq`</DocLink><br/><DocLink src="/cpp/keyword/nullptr">`nullptr`</DocLink> <Revision since="C++11">(C++11)</Revision><br/><DocLink src="/cpp/keyword/operator">`operator`</DocLink> (1)<br/><DocLink src="/cpp/keyword/or">`or`</DocLink><br/><DocLink src="/cpp/keyword/or_eq">`or_eq`</DocLink><br/><DocLink src="/cpp/keyword/private">`private`</DocLink> (4)<br/><DocLink src="/cpp/keyword/protected">`protected`</DocLink><br/><DocLink src="/cpp/keyword/public">`public`</DocLink><br/> | <DocLink src="/cpp/keyword/reflexpr">`reflexpr`</DocLink> (reflection TS)<br/><DocLink src="/cpp/keyword/register">`register`</DocLink> (3)<br/><DocLink src="/cpp/keyword/reinterpret_cast">`reinterpret_cast`</DocLink><br/><DocLink src="/cpp/keyword/requires">`requires`</DocLink> <Revision since="C++20">(C++20)</Revision><br/><DocLink src="/cpp/keyword/return">`return`</DocLink><br/><DocLink src="/cpp/keyword/short">`short`</DocLink><br/><DocLink src="/cpp/keyword/signed">`signed`</DocLink><br/><DocLink src="/cpp/keyword/sizeof">`sizeof`</DocLink> (1)<br/><DocLink src="/cpp/keyword/static">`static`</DocLink><br/><DocLink src="/cpp/keyword/static_assert">`static_assert`</DocLink> <Revision since="C++11">(C++11)</Revision><br/><DocLink src="/cpp/keyword/static_cast">`static_cast`</DocLink><br/><DocLink src="/cpp/keyword/struct">`struct`</DocLink> (1)<br/><DocLink src="/cpp/keyword/switch">`switch`</DocLink><br/><DocLink src="/cpp/keyword/synchronized">`synchronized`</DocLink> (TM TS)<br/><DocLink src="/cpp/keyword/template">`template`</DocLink><br/><DocLink src="/cpp/keyword/this">`this`</DocLink> (5)<br/><DocLink src="/cpp/keyword/thread_local">`thread_local`</DocLink> <Revision since="C++11">(C++11)</Revision><br/><DocLink src="/cpp/keyword/throw">`throw`</DocLink> (3) (4)<br/><DocLink src="/cpp/keyword/true">`true`</DocLink><br/><DocLink src="/cpp/keyword/try">`try`</DocLink><br/><DocLink src="/cpp/keyword/typedef">`typedef`</DocLink><br/><DocLink src="/cpp/keyword/typeid">`typeid`</DocLink><br/><DocLink src="/cpp/keyword/typename">`typename`</DocLink> (3) (4)<br/><DocLink src="/cpp/keyword/union">`union`</DocLink><br/><DocLink src="/cpp/keyword/unsigned">`unsigned`</DocLink><br/><DocLink src="/cpp/keyword/using">`using`</DocLink> (1) (4)<br/><DocLink src="/cpp/keyword/virtual">`virtual`</DocLink><br/><DocLink src="/cpp/keyword/void">`void`</DocLink><br/><DocLink src="/cpp/keyword/volatile">`volatile`</DocLink><br/><DocLink src="/cpp/keyword/wchar_t">`wchar_t`</DocLink><br/><DocLink src="/cpp/keyword/while">`while`</DocLink><br/><DocLink src="/cpp/keyword/xor">`xor`</DocLink><br/><DocLink src="/cpp/keyword/xor_eq">`xor_eq`</DocLink> |
13+
14+
* (1) — meaning changed or new meaning added in C++11.
15+
* (2) — new meaning added in C++14.
16+
* (3) — meaning changed or new meaning added in C++17.
17+
* (4) — meaning changed or new meaning added in C++20.
18+
* (5) — new meaning added in C++23.
19+
20+
Note that: <DocLink src="/cpp/keyword/and">`and`</DocLink>, <DocLink src="/cpp/keyword/bitor">`bitor`</DocLink>, <DocLink src="/cpp/keyword/or">`or`</DocLink>, <DocLink src="/cpp/keyword/xor">`xor`</DocLink>, <DocLink src="/cpp/keyword/compl">`compl`</DocLink>, <DocLink src="/cpp/keyword/bitand">`bitand`</DocLink>, <DocLink src="/cpp/keyword/and_eq">`and_eq`</DocLink>, <DocLink src="/cpp/keyword/or_eq">`or_eq`</DocLink>, <DocLink src="/cpp/keyword/xor_eq">`xor_eq`</DocLink>, <DocLink src="/cpp/keyword/not">`not`</DocLink> and <DocLink src="/cpp/keyword/not_eq">`not_eq`</DocLink> (along with digraphs: `<motion-less-code>%`, `%<`, `<:`, `:>`, `%:`, `%:%:`<Revision until="C++17"> and trigraphs: `??<`, `??>`, `??(`, `??)`, `??=`, `??/`, `??'`, `??!`, `??-`</Revision>) provide an <DocLink src="/cpp/language/operator_alternative">alternative way to represent standard tokens</DocLink>.<Revision since="C++11"> These keywords are also considered reserved in attributes (excluding attribute argument lists), but some implementations handle them the same as the others.</Revision>
21+
22+
In addition to keywords, there are _identifiers with special meaning_, which may be used as names of objects or functions, but have special meaning in certain contexts.
23+
24+
| |
25+
| :---- |
26+
| <DocLink src="/cpp/identifier_with_special_meaning/final">`final`</DocLink> <Revision since="C++11">(C++11)</Revision><br/><DocLink src="/cpp/identifier_with_special_meaning/override">`override`</DocLink> <Revision since="C++11">(C++11)</Revision><br/><DocLink src="/cpp/keyword/transaction_safe">`transaction_safe`</DocLink> (TM TS)<br/><DocLink src="/cpp/keyword/transaction_safe_dynamic">`transaction_safe_dynamic`</DocLink> (TM TS)<br/><DocLink src="/cpp/identifier_with_special_meaning/import">`import`</DocLink> <Revision since="C++20">(C++20)</Revision><br/><DocLink src="/cpp/identifier_with_special_meaning/module">`module`</DocLink> <Revision since="C++20">(C++20)</Revision><br/><DocLink src="/cpp/identifier_with_special_meaning/pre">`pre`</DocLink> <Revision since="C++26">(C++26)</Revision><br/><DocLink src="/cpp/identifier_with_special_meaning/post">`post`</DocLink> <Revision since="C++26">(C++26)</Revision><br/><DocLink src="/cpp/identifier_with_special_meaning/trivially_relocatable_if_eligible">`trivially_relocatable_if_eligible`</DocLink> <Revision since="C++26">(C++26)</Revision><br/><DocLink src="/cpp/identifier_with_special_meaning/replaceable_if_eligible">`replaceable_if_eligible`</DocLink> <Revision since="C++26">(C++26)</Revision> |
27+
28+
Also, all <DocLink src="/cpp/language/identifiers">identifiers</DocLink> that contain a double underscore `__` in any position and each identifier that begins with an underscore followed by an uppercase letter is always reserved, and all identifiers that begin with an underscore are reserved for use as names in the global namespace. See <DocLink src="/cpp/language/identifiers">identifiers</DocLink> for more details.
29+
30+
The namespace `std` is used to place names of the standard C++ library. See <DocLink src="/cpp/language/extending_std">Extending namespace std</DocLink> for the rules about adding names to it.
31+
32+
<RevisionBlock since="C++11">
33+
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.
34+
</RevisionBlock>
35+
36+
The following tokens are recognized by the <DocLink src="/cpp/preprocessor">preprocessor</DocLink> when in context of a preprocessor directive:
37+
| | |
38+
| :---- | :---- |
39+
| <DocLink src="/cpp/preprocessor/conditional">`if`</DocLink><br/><DocLink src="/cpp/preprocessor/conditional">`elif`</DocLink><br/><DocLink src="/cpp/preprocessor/conditional">`else`</DocLink><br/><DocLink src="/cpp/preprocessor/conditional">`endif`</DocLink><br/><DocLink src="/cpp/preprocessor/conditional">`ifdef`</DocLink><br/><DocLink src="/cpp/preprocessor/conditional">`ifndef`</DocLink><br/><DocLink src="/cpp/preprocessor/conditional">`elifdef`</DocLink> <Revision since="C++23">(C++23)</Revision><br/><DocLink src="/cpp/preprocessor/conditional">`elifndef`</DocLink> <Revision since="C++23">(C++23)</Revision><br/><DocLink src="/cpp/preprocessor/replace">`define`</DocLink><br/><DocLink src="/cpp/preprocessor/replace">`undef`</DocLink> | <DocLink src="/cpp/preprocessor/include">`include`</DocLink><br/><DocLink src="/cpp/preprocessor/embed">`embed`</DocLink> <Revision since="C++26">(C++26)</Revision><br/><DocLink src="/cpp/preprocessor/line">`line`</DocLink><br/><DocLink src="/cpp/preprocessor/error">`error`</DocLink><br/><DocLink src="/cpp/preprocessor/error">`warning`</DocLink> <Revision since="C++23">(C++23)</Revision><br/><DocLink src="/cpp/preprocessor/impl">`pragma`</DocLink><br/><DocLink src="/cpp/preprocessor/conditional">`defined`</DocLink><br/><DocLink src="/cpp/feature_test">`__has_include`</DocLink> <Revision since="C++17">(C++17)</Revision><br/><DocLink src="/cpp/feature_test">`__has_cpp_attribute`</DocLink> <Revision since="C++20">(C++20)</Revision><br/><DocLink src="/cpp/feature_test">`__has_embed`</DocLink> <Revision since="C++26">(C++26)</Revision><br/><DocLink src="/cpp/keyword/export">`export`</DocLink> <Revision since="C++20">(C++20)</Revision><br/><DocLink src="/cpp/identifier_with_special_meaning/import">`import`</DocLink> <Revision since="C++20">(C++20)</Revision><br/><DocLink src="/cpp/identifier_with_special_meaning/module">`module`</DocLink> <Revision since="C++20">(C++20)</Revision> |
40+
41+
The following tokens are recognized by the <DocLink src="/cpp/preprocessor">preprocessor</DocLink> _outside_ the context of a preprocessor directive:
42+
43+
| |
44+
| :---- |
45+
| <DocLink src="/cpp/preprocessor/impl">`_Pragma`</DocLink> <Revision since="C++11">(C++11)</Revision> |
46+
47+
### See also
48+
49+
<DescList>
50+
<Desc>
51+
<DocLink slot="item" src="/c/keyword">C documentation</DocLink> for keywords
52+
</Desc>
53+
</DescList>

0 commit comments

Comments
 (0)