21 #include <type_traits> 30 namespace experimental {
32 template <
class...>
using void_t = void;
35 template <
class...>
using void_t = void;
41 void operator=(
nonesuch const&) =
delete;
44 template <
class _Default,
class _AlwaysVoid,
template <
class...>
class _Op,
class... _Args>
50 template <
class _Default,
template <
class...>
class _Op,
class... _Args>
53 using type = _Op<_Args...>;
57 template <
template<
class...>
class _Op,
class... _Args>
59 template <
template<
class...>
class _Op,
class... _Args>
61 template <
template<
class...>
class _Op,
class... _Args>
64 template <
class Default,
template<
class...>
class _Op,
class... _Args>
66 template <
class Default,
template<
class...>
class _Op,
class... _Args>
69 template <
class Expected,
template<
class...>
class _Op,
class... _Args>
71 template <
class Expected,
template<
class...>
class _Op,
class... _Args>
74 template <
class To,
template<
class...>
class _Op,
class... _Args>
76 template <
class To,
template<
class...>
class _Op,
class... _Args>
std::false_type value_t
Definition: Cpp17.h:46
constexpr bool is_detected_convertible_v
Definition: Cpp17.h:77
typename detected_or< Default, _Op, _Args... >::type detected_or_t
Definition: Cpp17.h:67
void void_t
Definition: Cpp17.h:32
constexpr bool is_detected_exact_v
Definition: Cpp17.h:72
std::is_convertible< detected_t< _Op, _Args... >, To > is_detected_convertible
Definition: Cpp17.h:75
constexpr bool is_detected_v
Definition: Cpp17.h:62
_Default type
Definition: Cpp17.h:47
std::true_type value_t
Definition: Cpp17.h:52
typename _DETECTOR< nonesuch, void, _Op, _Args... >::type detected_t
Definition: Cpp17.h:60
_Op< _Args... > type
Definition: Cpp17.h:53
typename _DETECTOR< nonesuch, void, _Op, _Args... >::value_t is_detected
Definition: Cpp17.h:58
std::is_same< Expected, detected_t< _Op, _Args... > > is_detected_exact
Definition: Cpp17.h:70