Meta  0.1
A tiny metaprogramming library
Math

Description

Integral constant arithmetic.

Modules

 lazy
 

Typedefs

template<typename T , typename 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<typename 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<typename T , typename 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<typename T , typename 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<typename T , typename 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<typename T , typename 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<typename T , typename 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<typename T , typename 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<typename T , typename 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<typename T , typename 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<typename... 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<typename... 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<typename T , typename 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<typename T , typename 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<typename T , typename 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<typename 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<typename T , typename 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<typename T , typename 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.