9 #if __cplusplus > 201103L 11 #include <experimental/type_traits> 27 namespace experimental {
30 nonesuch(nonesuch
const&) =
delete;
31 void operator=(nonesuch
const&) =
delete;
35 template <
class Default,
class AlwaysVoid,
template <
class...>
class Op,
class... Args>
37 using value_t = std::false_type;
41 template <
class Default,
template <
class...>
class Op,
class... Args>
42 struct detector<Default,
std::void_t<Op<Args...> >, Op, Args...> {
43 using value_t = std::true_type;
44 using type = Op<Args...>;
49 template <
template <
class...>
class Op,
class... Args>
50 using is_detected =
typename detail::detector<nonesuch, void, Op, Args...>::value_t;