Typing system

Fundamental Types

Integer
Signed Unsigned
Int8 UInt8
Int16 UInt16
Int32 UInt32
Int64 UInt64
Int UInt
LInt LUInt
Byte
Character
Char8
Char16
Char32
Char
WChar
Real
Float
Double
LDouble
Pointer
T*
T[]
T[N]
Boolean
Bool

Integer types

Declaration: [Longest][Unsigned]Int[Size]

Value Description
U specifies an unsigned interger otherwise integer is signed
Size the size in bits suffix should be present within declaration to specify fixed size intergers.
Notice that 64 bit integer is not specified until C++98!
[U]Int the size of intergers is equal to machine word size
L[U]Int the longest possible integer
Byte a type size of which is equal to 8 bits

Character types

Specifies a code points of the Unicode standard

Value Description
Char8 the N-bit code unit of the Unicode UTF-N encoding form
Char16
Char32
WChar the same as wchar_t sizeof wich is implementation-defined
Char A default framework-wide code unit. It is defined from one of specified above types

Real types

This is just Capital case of original C++ real types

Pointer types

Plain C++ pointer types. No special definitions are provided

Boolean type

Tha same as C++::bool

template<typename T> class Type reference

Public operators Description
Bool operator == (const Type &) Checks whether types are equal. Always returns True
Bool operator != (const Type &) Checks whether types are not equal. Always returns False
template <typename U> Checks whether types are equal. Always returns False
Bool operator == (const Type<U> &)
template <typename U> Checks whether types are not equal. Always returns True
Bool operator != (const Type<U> &)
Public types
typename Kind Defines a kind of a type
typename Sign Only integers! Defines a sign type for specified integer type
Particular attributes
T min Only integer and real types! Specialize a limit
value for a specified type
T max
Bool subscriptible Only pointers! Tells whether pointer is subscriptible (T[] and T[N]) or not (T*)

typename Type<T>::Kind

Defines one of the following classes

Kind:: Description
Nonfundamental Represents all non-fundamental types as structures and classes
Pointer Pointer types like T*, T[] and T[N]
Boolean Matches boolean type
Character Character type.
Notice that Char16 and Char32 types are casted as Kind::Integer until C++11 standard.
Integer All signed and unsigned integer types
Real Real types

Kind::Type<T> defines as Type<typename Type<T>::Kind>

Kind::Type<Bool>() == Type<Kind::Boolean>();
Kind::Type<Bool *>() == Type<Kind::Pointer>();
Kind::Type<Int32>() == Kind::Type<Int16>();
Kind::Type<Float>() == Kind::Type<Double>();
<a name="Sign"></a>

typename Type<T>::Sign

Only integer types! Defines one of the following classes

Kind::Integer:: Description
Signed Represents all non-fundamental types as structures and classes.
Unsigned Represents all non-fundamental types as structures and classes.

Particular type properties

Type<T>::min/ Type<T>::max

T Type<T>::min Type<T>::max
Integer types
Int8 -128 127
UInt8 0 255
Int16 -32768 32767
UInt16 0 65535
Int32 -2147483648U 2147483647
UInt32 0 4294967295U
Int64 -9223372036854775808LL 9223372036854775807LL
UInt64 0 18446744073709551615ULL
Real types
Float 1.17549435e-38F 3.40282347e+38F
Double 2.2250738585072014e-308 1.7976931348623157e+308
LDouble 2.2250738585072014e-308L 1.7976931348623157e+308L