31template <
typename... Ts>
41template <
typename... Ts>
42using void_t =
typename detail::make_void<Ts...>::type;
46inline bool uncaught_exception()
noexcept
49#if (defined(_MSVC_LANG) && _MSVC_LANG > 201402L) || __cplusplus > 201402L
50 return std::uncaught_exceptions() > 0;
52 return std::uncaught_exception();
58template <
bool B,
typename T =
void>
59using enable_if_t = std::enable_if_t<B, T>;
63template <
bool B,
typename T,
typename F>
64using conditional_t = std::conditional_t<B, T, F>;
69using decay_t = std::decay_t<T>;
74constexpr bool greater(
const T&& lhs,
const T&& rhs)
76 return std::greater<void>()(lhs, rhs);
82constexpr bool greater_equal(
const T&& lhs,
const T&& rhs)
84 return std::greater_equal<void>()(lhs, rhs);
90constexpr bool less(
const T&& lhs,
const T&& rhs)
92 return std::less<void>()(lhs, rhs);
98constexpr bool less_equal(
const T&& lhs,
const T&& rhs)
100 return std::less_equal<void>()(lhs, rhs);
109template <
class B1,
class... Bn>
111 : std::conditional_t<bool(B1::value), conjunction<Bn...>, B1> {};