value::to_number

## `value::to_number`

Return the stored number cast to an arithmetic type.

### Synopsis

    template<
        class T>
    T
    to_number(
        boost::system::error_code& ec) const noexcept; (1)

    template<
        class T>
    T
    to_number(
        std::error_code& ec) const noexcept; (2)

    template<
        class T>
    T
    to_number() const; (3)

### Description

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 `is_number()` returns `false`, then the operation fails with an error.

### Constraints

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

### Complexity

Constant.

### Exception Safety

- (1), (2) no-throw guarantee.

- (3) strong guarantee.

### Return Value

The converted number.

### Parameters

Name | Description
--- | ---
`ec` | Set to the error, if any occurred.

### Exceptions

Type | Thrown On
--- | ---
`boost::system::system_error` | Overload (3) reports errors by throwing an exception.

Edit this page