59template <
typename...
Ts>
69template <
typename...
Ts>
70using void_t =
typename detail::make_void<
Ts...>::type;
74inline bool uncaught_exception()
noexcept
76#if __cplusplus > 201402L
77 return std::uncaught_exceptions() > 0;
79 return std::uncaught_exception();
85template <
bool B,
typename T =
void>
86using enable_if_t = std::enable_if_t<B, T>;
90template <
bool B,
typename T,
typename F>
91using conditional_t = std::conditional_t<B, T, F>;
96using decay_t = std::decay_t<T>;
101constexpr bool greater(
const T&&
lhs,
const T&& rhs)
103 return std::greater<void>()(
lhs, rhs);
109constexpr bool greater_equal(
const T&&
lhs,
const T&& rhs)
111 return std::greater_equal<void>()(
lhs, rhs);
117constexpr bool less(
const T&&
lhs,
const T&& rhs)
119 return std::less<void>()(
lhs, rhs);
125constexpr bool less_equal(
const T&&
lhs,
const T&& rhs)
127 return std::less_equal<void>()(
lhs, rhs);
136template <
class B1,
class...
Bn>
138 : std::conditional_t<bool(B1::value), conjunction<Bn...>, B1> {};