The complete list of scalar types in C++ according to the standard (quoting the latest draft):
[basic.fundamental]
There are five standard signed integer types : “signed char”, “short int”, “int”, “long int”, and “long long int”
For each of the standard signed integer types, there exists a corresponding (but different) standard unsigned integer type
Types bool, char, wchar_t, char8_t, char16_t, char32_t, and the signed and unsigned integer types are collectively called integral types
There are three floating-point types: float, double, and long double.
Integral and floating-point types are collectively called arithmetic types.
[basic.compound]
pointers to non-static class members, which identify members of a given type within objects of a given class, [dcl.mptr]. Pointers to data members and pointers to member functions are collectively called pointer-to-member types.
The type of a pointer to cv void or a pointer to an object type is called an object pointer type. The type of a pointer that can designate a function is called a function pointer type.
[dcl.enum]
The enumeration type declared with an enum-key of only enum is an unscoped enumeration, and its enumerators are unscoped enumerators.
The enum-keys enum class and enum struct are semantically equivalent; an enumeration type declared with one of these is a scoped enumeration, and its enumerators are scoped enumerators.
[basic.types]
Arithmetic types ([basic.fundamental]), enumeration types, pointer types, pointer-to-member types ([basic.compound]), std::nullptr_t, and cv-qualified versions of these types are collectively called scalar types.
Of these types, C lacks scoped enumerations, pointers-to-member, std::nullptr_t
and char8_t
(char8_t
is not yet in C++ either; it will be introduced in the upcoming C++20).
bool
(<stdbool.h>
), wchar_t
(<stddef.h>
), char16_t
and char32_t
(<uchar.h>
) types are only defined in certain standard headers in C.