| Home | Libraries | People | FAQ | More

###### value::to_number (2 of 2 overloads)

Return the stored number cast to an arithmetic type.

<h7> Synopsis </h7>

    template<
        class T>
    T
    to_number() const;

<h7> Description </h7>

This function attempts to return the stored value converted to the arithmetic type `T` which may not be `bool`:

- If `T` is an integral type and the stored value is a number which can be losslessly converted, the conversion is performed without error and the converted number is returned.
- If `T` is an integral type and the stored value is a number which cannot be losslessly converted, then the operation fails with an error.
- If `T` is a floating point type and the stored value is a number, the conversion is performed without error. The converted number is returned, with a possible loss of precision.
- Otherwise, if the stored value is not a number; that is, if `this->is_number()` returns `false`, then the operation fails with an error.

<h7> Constraints </h7>

    std::is_arithmetic< T >::value && ! std::is_same< T, bool >::value

<h7> Complexity </h7>

Constant.

<h7> Return Value </h7>

The converted number.

<h7> Exceptions </h7>

Type | Thrown On
--- | ---
`system_error` | on error.