The type parameter must be a data type for which there is a known method for converting object to, whether this be a builtin or through a casting function. It can be a reference or an enumerator. All types of conversions that are well-defined and allowed by the compiler are done using static_cast.
The static_cast operator can be used for operations such as
- Converting a pointer of a base class to a pointer of a derived class,
- Convert numeric data types such as enums to ints or ints to floats.
However, static_cast conversions are not necessarily safe as no run-time type check is done which can cause casting between incompatible data types, for example pointers. However, this is checked at compile time to prevent casting obvious incompatibles. Also, sometimes static_cast between pointer of base to pointer of derived will produce an erroneous result, because of the object layout model.