Front Page / Data Types / Numeric / integral_c

# integral_c

### Synopsis

    template<
          typename T, T N
        >
    struct integral_c
    {
        // unspecified
        // ...
    };

### Description

A generic Integral Constant wrapper.

### Header

    #include <boost/mpl/integral_c.hpp>

### Model of

Integral Constant

### Parameters

Parameter | Requirement | Description
--- | --- | ---
`T` | An integral type | Wrapper's value type.
`N` | An integral constant | A value to wrap.

### Expression semantics

The semantics of an expression are defined only where they differ from, or are not defined in Integral Constant.

For arbitrary integral type `t` and integral constant `n`:

Expression | Semantics
--- | ---
`integral_c<t,c>` | An Integral Constant `x` such that `x::value == c` and `x::value_type` is identical to `t`.

### Example

    typedef integral_c<short,8> eight;

    BOOST_MPL_ASSERT(( is_same< eight::value_type, short > ));
    BOOST_MPL_ASSERT(( is_same< eight::type, eight > ));
    BOOST_MPL_ASSERT(( is_same< next< eight >::type, integral_c<short,9> > ));
    BOOST_MPL_ASSERT(( is_same< prior< eight >::type, integral_c<short,7> > ));
    BOOST_MPL_ASSERT_RELATION( (eight::value), ==, 8 );
    assert( eight() == 8 );

### See also

Data Types, Integral Constant, `bool_`, `int_`, `long_`, `size_t`