short| General topics | ||||||||||||||||
| Flow control | ||||||||||||||||
| Conditional execution statements | ||||||||||||||||
| Iteration statements (loops) | ||||||||||||||||
| Jump statements | ||||||||||||||||
| Functions | ||||||||||||||||
| Function declaration | ||||||||||||||||
| Lambda function expression | ||||||||||||||||
inline specifier | ||||||||||||||||
| Dynamic exception specifications(until C++17*) | ||||||||||||||||
noexcept specifier(C++11) | ||||||||||||||||
| Exceptions | ||||||||||||||||
| Namespaces | ||||||||||||||||
| Types | ||||||||||||||||
| Specifiers | ||||||||||||||||
| ||||||||||||||||
| Storage duration specifiers | ||||||||||||||||
| Initialization | ||||||||||||||||
| Expressions | ||||||||||||||||
| Alternative representations | ||||||||||||||||
| Literals | ||||||||||||||||
| Boolean -Integer -Floating-point | ||||||||||||||||
| Character -String -nullptr(C++11) | ||||||||||||||||
| User-defined(C++11) | ||||||||||||||||
| Utilities | ||||||||||||||||
| Attributes(C++11) | ||||||||||||||||
| Types | ||||||||||||||||
typedef declaration | ||||||||||||||||
| Type alias declaration(C++11) | ||||||||||||||||
| Casts | ||||||||||||||||
| Memory allocation | ||||||||||||||||
| Classes | ||||||||||||||||
| Class-specific function properties | ||||||||||||||||
| ||||||||||||||||
| Special member functions | ||||||||||||||||
| Templates | ||||||||||||||||
| Miscellaneous | ||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Identifiers with special meaning | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#include <climits>#include <concepts>#include <iostream>#include <limits> static_assert(sizeof(short)>=16/CHAR_BIT);static_assert(sizeof(unsignedshort)>=16/CHAR_BIT);static_assert(std::numeric_limits<short>::min()<=-32'768); //'static_assert(std::numeric_limits<short>::max()>=32'767); //'static_assert(std::numeric_limits<unsignedshort>::max()>=65'535u); //' // concepts are available since C++20static_assert(std::integral<short> andstd::integral<unsignedshort>); template<typename T,typename...Ts>concept all_same=(...andstd::same_as<T, Ts>); static_assert(all_same<short,shortint,signedshort,signedshortint>);static_assert(all_same<unsignedshort,unsignedshortint>); #define OUT(...) std::cout << #__VA_ARGS__ << " = " << __VA_ARGS__ << '\n' int main(){ OUT(sizeof(short)); OUT(sizeof(unsignedshort)); OUT(std::numeric_limits<short>::min()); OUT(std::numeric_limits<short>::max()); OUT(std::numeric_limits<unsignedshort>::max());} #undef OUT
Possible output:
sizeof(short) = 2sizeof(unsigned short) = 2std::numeric_limits<short>::min() = -32768std::numeric_limits<short>::max() = 32767std::numeric_limits<unsigned short>::max() = 65535
void,std::nullptr_t(since C++11).int.Modifiers:signed,unsigned,short,long.bool.Boolean literals:false,true.char,char8_t(since C++20),char16_t,char32_t(since C++11),wchar_t.float,double.