Punctuation
From cppreference.net
These are the punctuation symbols in C++. The meaning of each symbol is detailed in the linked pages.
Preprocessing operators
Preprocessing operators are recognized by preprocessors .
# (including % : )
- Introduce a preprocessing directive .
- The preprocessing operator for stringification .
## (including % : % : )
Single-character operators and punctuators
{ and } (including < % and % > )
- In a class definition, delimit the member specification .
- In an enumeration definition, delimit the enumerator list.
- Delimit a compound statement . The compound statement may be part of
| (since C++11) |
- Part of the aggregate initialization (until C++11) list-initialization (since C++11) syntax of an initializer .
- In a namespace definition , delimit the namespace body.
- In a language linkage specification , delimit the declarations.
|
(since C++20) |
[ and ] (including < : and : > )
- Subscript operator ; part of operator [ ] in operator overloading .
- Part of array declarator in a declaration or a type-id (e.g. in a new expression ).
- Part of new [ ] operator in operator overloading (allocation function) .
- Part of delete [ ] operator in delete expression and operator overloading (deallocation function) .
|
(since C++11) |
|
(since C++17) |
|
(since C++26) |
( and )
- In an expression, indicate grouping .
- Function call operator ; part of operator ( ) in operator overloading .
- In a function-style type cast , delimit the expression/initializers.
-
In a
static_cast,const_cast,reinterpret_cast, ordynamic_cast, delimit the expression. - Delimit the operand of the following operators:
| (since C++11) |
- In a placement new expression , delimit the placement arguments.
- In a new expression , optionally delimit the type-id.
- In a new expression , delimit the initializers.
- In a C-style cast , delimit the type-id.
- In a declaration or a type-id , indicate grouping.
- Delimit the parameter list in
-
- a function declarator (in a declaration or a type-id )
| (since C++11) | |
| (since C++17) | |
| (since C++20) |
- Part of the direct-initialization syntax of an initializer .
- In an asm declaration , delimit the string literal.
- In a member initializer list , delimit the initializers to a base or member.
- Delimit the controlling clause of a selection statement or iteration statement, including:
| (since C++11) |
- In a handler , delimit the parameter declaration.
- In a function-like macro definition , delimit the macro parameters.
- In a function-like macro invocation , delimit the macro arguments or prevent commas from being interpreted as argument separators.
-
Part of a
defined,__has_include(since C++17) ,__has_cpp_attribute(since C++20) preprocessing operator.
|
(since C++11) | ||
|
(since C++14) | ||
|
(since C++17) | ||
|
(since C++20) |
;
- Indicate the end of
|
(since C++20) |
- Separate the condition and statement of a for statement .
:
- Part of conditional operator .
- Part of label declaration .
- In the base-clause of a class definition , introduce the base class .
- Part of access specifier in member specification.
- In a bit-field member declaration , introduce the width.
- In a constructor definition, introduce the member initializer list.
|
(since C++11) |
|
(since C++17) |
|
(since C++20) |
?
- Part of conditional operator .
.
|
(since C++20) |
~ (including compl )
- Unary complement operator (a.k.a. bitwise not operator) ; part of operator~ in operator overloading .
- Part of an identifier expression to name a destructor or pseudo-destructor.
! (including not )
- Logical not operator ; part of operator ! in operator overloading .
|
(since C++23) |
+
- Unary plus operator ; part of operator + in operator overloading .
- Binary plus operator ; part of operator + in operator overloading .
-
- Unary minus operator ; part of operator - in operator overloading .
- Binary minus operator ; part of operator - in operator overloading .
*
- Indirection operator ; part of operator * in operator overloading .
- Multiplication operator ; part of operator * in operator overloading .
- Pointer operator or part of pointer-to-member operator in a declarator or in a type-id .
|
(since C++17) |
/
- Division operator ; part of operator / in operator overloading .
%
- Modulo operator ; part of operator % in operator overloading .
^ (including xor )
- Bitwise xor operator ; part of operator ^ in operator overloading .
& (including bitand )
- Address-of operator ; part of operator & in operator overloading .
- Bitwise and operator ; part of operator & in operator overloading .
- Lvalue-reference operator in a declarator or in a type-id .
|
(since C++11) |
| (including bitor )
- Bitwise or operator ; part of operator | in operator overloading .
=
- Simple assignment operator ; part of operator = in operator overloading , which might be a special member function ( copy assignment operator or move assignment operator (since C++11) ).
- Part of the copy-initialization and aggregate initialization (until C++11) copy-list-initialization (since C++11) syntax of an initializer .
- In a function declaration , introduce a default argument .
- In a template parameter list , introduce a default template argument .
- In a namespace alias definition , separate the alias and the aliased namespace.
- In an enum definition , introduce the value of enumerator.
- Part of pure-specifier in a pure virtual function declaration .
|
(since C++11) |
|
(since C++20) |
<
- Less-than operator ; part of operator < in operator overloading .
-
In a
static_cast,const_cast,reinterpret_cast, ordynamic_cast, introduce the type-id. - Introduce a template argument list .
- Introduce a template parameter list in
| (since C++20) |
- Part of template <> in template specialization declaration .
- Introduce a header name in
| (since C++17) | |
| (since C++20) |
>
- Greater-than operator ; part of operator > in operator overloading .
-
static_cast,const_cast,reinterpret_cast, ordynamic_cast, indicate the end of type-id. - Indicate the end of a template argument list .
- Indicate the end of a template parameter list in
| (since C++20) |
- Part of template <> in template specialization declaration .
- Indicate the end of a header name in
| (since C++17) | |
| (since C++20) |
,
- Comma operator ; part of operator, in operator overloading .
- List separator in
-
- the declarator list in a declaration
- initializer list in initialization
- the placement argument list in a placement new
- the argument list in a function call expression
- the enumerator list in an enum declaration
- the base class list in a class declaration
- the member initializer list in a constructor definition
- a function parameter list
- a template parameter list
- a template argument list
|
(since C++11) |
|
(since C++17) |
|
(since C++23) |
-
- the macro parameter list in a function-like macro definition
- the macro argument list in a function-like macro invocation , unless found between the parentheses of an argument
|
(since C++11) |
Multi-character operators and punctuators
...
- In the parameter list of a function declarator or lambda expression (since C++11) or user-defined deduction guide (since C++17) , signify a variadic function .
- In a handler , signify catch-all handler.
|
(since C++11) |
|
(since C++26) |
::
- Scope resolution operator in
-
- a qualified name
- a pointer-to-member declaration
-
a
newordeleteexpression, to indicate that only global allocation or deallocation functions are looked up
|
(since C++11) |
|
(since C++17) |
. *
- >
- Member access operator ; part of operator - > in operator overloading .
|
(since C++11) |
|
(since C++17) |
|
(since C++20) |
- > *
- Pointer-to-member access operator ; part of operator - > * in operator overloading .
+ =
- Compound assignment operator ; part of operator + = in operator overloading .
- =
- Compound assignment operator ; part of operator - = in operator overloading .
* =
- Compound assignment operator ; part of operator * = in operator overloading .
/ =
- Compound assignment operator ; part of operator / = in operator overloading .
% =
- Compound assignment operator ; part of operator % = in operator overloading .
^ = (including xor_eq )
- Compound assignment operator ; part of operator ^ = in operator overloading .
& = (including and_eq )
- Compound assignment operator ; part of operator & = in operator overloading .
| = (including or_eq )
- Compound assignment operator ; part of operator | = in operator overloading .
==
- Equality operator ; part of operator == in operator overloading .
! = (including not_eq )
- Inequality operator ; part of operator ! = in operator overloading .
<=
- Less-than-or-equal-to operator ; part of operator <= in operator overloading .
>=
- Greater-than-or-equal-to operator ; part of operator >= in operator overloading .
<=>
|
(since C++20) |
&& (including and )
- Logical and operator ; part of operator && in operator overloading .
|
(since C++11) |
|| (including or )
- Logical or operator ; part of operator || in operator overloading .
<<
- Bitwise shift operator ; part of operator << in operator overloading ( bitwise operator or stream insertion operator ).
>>
- Bitwise shift operator ; part of operator >> in operator overloading ( bitwise operator or stream extraction operator ).
<<=
- Compound assignment operator ; part of operator <<= in operator overloading .
>>=
- Compound assignment operator ; part of operator >>= in operator overloading .
++
- Increment operator ; part of operator ++ in operator overloading .
--
- Decrement operator ; part of operator -- in operator overloading .
References
- C++23 standard (ISO/IEC 14882:2024):
-
- 5.12 Operators and punctuators [lex.operators]
- C++20 standard (ISO/IEC 14882:2020):
-
- 5.12 Operators and punctuators [lex.operators]
- C++17 standard (ISO/IEC 14882:2017):
-
- 5.12 Operators and punctuators [lex.operators]
- C++14 standard (ISO/IEC 14882:2014):
-
- 2.13 Operators and punctuators [lex.operators]
- C++11 standard (ISO/IEC 14882:2011):
-
- 2.13 Operators and punctuators [lex.operators]
- C++03 standard (ISO/IEC 14882:2003):
-
- 2.12 Operators and punctuators [lex.operators]
- C++98 standard (ISO/IEC 14882:1998):
-
- 2.12 Operators and punctuators [lex.operators]
See also
| Alternative representations | alternative spellings for certain operators |
|
C documentation
for
Punctuation
|
|