Math
Meta

## Description

Integral constant arithmetic.

## Modules

| lazy

## Typedefs

template<integral T, integral U>
using | meta::bit_and = std::integral_constant< decltype(T::type::value &U::type::value), T::type::value &U::type::value >
| An integral constant wrapper around the result of bitwise-and'ing the two wrapped integers `T::type::value` and `U::type::value`.
template<integral T>
using | meta::bit_not = std::integral_constant< decltype(~T::type::value), ~T::type::value >
| An integral constant wrapper around the result of bitwise-complementing the wrapped integer `T::type::value`.
template<integral T, integral U>
using | meta::bit_or = std::integral_constant< decltype(T::type::value|U::type::value), T::type::value|U::type::value >
| An integral constant wrapper around the result of bitwise-or'ing the two wrapped integers `T::type::value` and `U::type::value`.
template<integral T, integral U>
using | meta::bit_xor = std::integral_constant< decltype(T::type::value ^ U::type::value), T::type::value ^ U::type::value >
| An integral constant wrapper around the result of bitwise-exclusive-or'ing the two wrapped integers `T::type::value` and `U::type::value`.
template<integral T, integral U>
using | meta::divides = std::integral_constant< decltype(T::type::value/U::type::value), T::type::value/U::type::value >
| An integral constant wrapper around the result of dividing the two wrapped integers `T::type::value` and `U::type::value`.
template<integral T, integral U>
using | meta::equal_to = bool_< T::type::value==U::type::value >
| A Boolean integral constant wrapper around the result of comparing `T::type::value` and `U::type::value` for equality.
template<integral T, integral U>
using | meta::greater = bool_<(T::type::value > U::type::value)>
| A Boolean integral constant wrapper around `true` if `T::type::value` is greater than `U::type::value`; `false`, otherwise.
template<integral T, integral U>
using | meta::greater_equal = bool_<(T::type::value >=U::type::value)>
| A Boolean integral constant wrapper around `true` if `T::type::value` is greater than or equal to `U::type::value`; `false`, otherwise.
template<integral T, integral U>
using | meta::less = bool_<(T::type::value< U::type::value)>
| A Boolean integral constant wrapper around `true` if `T::type::value` is less than `U::type::value`; `false`, otherwise.
template<integral T, integral U>
using | meta::less_equal = bool_<(T::type::value<=U::type::value)>
| A Boolean integral constant wrapper around `true` if `T::type::value` is less than or equal to `U::type::value`; `false`, otherwise.
template<integral ... Ts>
using | meta::max_ = fold< pop_front< list< Ts... > >, front< list< Ts... > >, quote< detail::max_ > >
| An integral constant wrapper around the maximum of `Ts::type::value...`
template<integral ... Ts>
using | meta::min_ = fold< pop_front< list< Ts... > >, front< list< Ts... > >, quote< detail::min_ > >
| An integral constant wrapper around the minimum of `Ts::type::value...`
template<integral T, integral U>
using | meta::minus = std::integral_constant< decltype(T::type::value - U::type::value), T::type::value - U::type::value >
| An integral constant wrapper around the result of subtracting the two wrapped integers `T::type::value` and `U::type::value`.
template<integral T, integral U>
using | meta::modulus = std::integral_constant< decltype(T::type::value % U::type::value), T::type::value % U::type::value >
| An integral constant wrapper around the remainder of dividing the two wrapped integers `T::type::value` and `U::type::value`.
template<integral T, integral U>
using | meta::multiplies = std::integral_constant< decltype(T::type::value *U::type::value), T::type::value *U::type::value >
| An integral constant wrapper around the result of multiplying the two wrapped integers `T::type::value` and `U::type::value`.
template<integral T>
using | meta::negate = std::integral_constant< decltype(-T::type::value), -T::type::value >
| An integral constant wrapper around the result of negating the wrapped integer `T::type::value`.
template<integral T, integral U>
using | meta::not_equal_to = bool_< T::type::value !=U::type::value >
| A Boolean integral constant wrapper around the result of comparing `T::type::value` and `U::type::value` for inequality.
template<integral T, integral U>
using | meta::plus = std::integral_constant< decltype(T::type::value+U::type::value), T::type::value+U::type::value >
| An integral constant wrapper around the result of adding the two wrapped integers `T::type::value` and `U::type::value`.