virthttp  0.0
libvirt http interface
detect.hpp
Go to the documentation of this file.
1 #pragma once
2 #include <type_traits>
3 
4 namespace nstd {
5 
6 namespace detail {
7 template <class Default, class AlwaysVoid, template <class...> class Op, class... Args> struct detector {
8  using value_t = std::false_type;
9  using type = Default;
10 };
11 
12 template <class Default, template <class...> class Op, class... Args> struct detector<Default, std::void_t<Op<Args...>>, Op, Args...> {
13  using value_t = std::true_type;
14  using type = Op<Args...>;
15 };
16 
17 } // namespace detail
18 
19 class nonesuch;
20 
21 template <template <class...> class Op, class... Args> using is_detected = typename detail::detector<nonesuch, void, Op, Args...>::value_t;
22 
23 template <template <class...> class Op, class... Args> constexpr bool is_detected_v = is_detected<Op, Args...>::value;
24 
25 } // namespace nstd
Default type
Definition: detect.hpp:9
STL namespace.
Definition: detect.hpp:7
Definition: detect.hpp:4
typename detail::detector< nonesuch, void, Op, Args... >::value_t is_detected
Definition: detect.hpp:21
constexpr bool is_detected_v
Definition: detect.hpp:23
std::false_type value_t
Definition: detect.hpp:8