Meta  0.1
A tiny metaprogramming library
Logical

Description

Logical operations.

Modules

 lazy
 

Typedefs

template<typename... Bools>
using meta::and_ = _t< detail::_and_< Bools... >>
 Logically and together all the integral constant-wrapped Boolean parameters, with short-circuiting.
 
template<bool... Bools>
using meta::and_c = std::is_same< integer_sequence< bool, Bools... >, integer_sequence< bool,(Bools||true)... >>
 Logically and together all the Boolean parameters.
 
template<typename... Args>
using meta::if_ = _t< detail::_if_< Args... >>
 Select one type or another depending on a compile-time Boolean.
 
template<bool If, typename... Args>
using meta::if_c = _t< detail::_if_< bool_< If >, Args... >>
 Select one type or another depending on a compile-time Boolean.
 
template<typename Bool >
using meta::not_ = not_c< Bool::type::value >
 Logically negate the integral constant-wrapped Boolean parameter.
 
template<bool Bool>
using meta::not_c = bool_<!Bool >
 Logically negate the Boolean parameter.
 
template<typename... Bools>
using meta::or_ = _t< detail::_or_< Bools... >>
 Logically or together all the integral constant-wrapped Boolean parameters, with short-circuiting.
 
template<bool... Bools>
using meta::or_c = not_< std::is_same< integer_sequence< bool, Bools... >, integer_sequence< bool,(Bools &&false)... >>>
 Logically or together all the Boolean parameters.
 
template<typename... Bools>
using meta::strict_and = and_c< Bools::type::value... >
 Logically and together all the integral constant-wrapped Boolean parameters, without doing short-circuiting.
 
template<typename... Bools>
using meta::strict_or = or_c< Bools::type::value... >
 Logically or together all the integral constant-wrapped Boolean parameters, without doing short-circuiting.