32 #include <type_traits>
40 template<
typename Default,
typename Placeholder,
template<
typename...>
class Op,
typename... Args>
43 using value_t = std::false_type;
47 template<
typename Default,
template<
typename...>
class Op,
typename... Args>
48 struct IsDetected<Default, std::void_t<Op<Args...>>, Op, Args...>
51 using type = Op<Args...>;
55 template<
template<
typename...>
class Op,
typename... Args>
56 constexpr
bool IsDetected_v = detail::IsDetected<void, void, Op, Args...>::value_t::value;
58 template<
typename Type,
template<
typename...>
class Op,
typename... Args>
59 using IsDetected_t =
typename detail::IsDetected<
Type, void, Op, Args...>::type;