31 #ifndef BOOL_HPP_INCLUDED
32 #define BOOL_HPP_INCLUDED
34 #include <type_traits>
44 struct not_ : std::integral_constant<bool, !A::value> {};
53 template <
class...Args>
54 struct or_ : std::false_type {};
63 template <
class...Args>
64 struct or_<std::false_type, Args...> :
or_<Args...> {};
73 template <
class...Args>
74 struct or_<std::true_type, Args...> : std::true_type {};
83 template <
class...Args>
84 struct and_ : std::false_type {};
94 struct and_<std::true_type> : std::true_type {};
103 template <
class...Args>
104 struct and_<std::true_type, Args...> :
and_<Args...> {};
113 template <
class...Args>
114 struct and_<std::false_type, Args...> : std::false_type {};