detection namespace

Classes

template<typename T, typename, template<typename...> class Op, typename... Args>
struct detector
template<typename T, template<typename...> class Op, typename... Args>
struct detector<T, std::void_t<Op<Args...>>, Op, Args...>
struct NoneSuch

Typedefs

using NoneSuchType = NoneSuch
template<template<typename...> class Op, typename... Args>
using is_detected = detector<NoneSuchType, void, Op, Args...>
template<template<typename...> class Op, typename... Args>
using detected_t = typename is_detected<Op, Args...>::type
template<typename ExpectedT, template<typename...> class Op, typename... Args>
using is_detected_exact = std::is_same<detected_t<Op, Args...>, ExpectedT>
template<typename T, template<typename...> class Op, typename... Args>
using is_detected_convertible = std::is_convertible<detected_t<Op, Args...>, T>