The Gaudi Framework  v30r1 (5d4f4ae2)
detected.h
Go to the documentation of this file.
1 #ifndef DETECTED_H
2 #define DETECTED_H
3 // implementation of Library Fundamentals TS V2 detected idiom,
4 // taken from http://en.cppreference.com/w/cpp/experimental/is_detected
5 
6 namespace Gaudi
7 {
8  namespace cpp17
9  {
10  namespace details
11  {
12  template <typename...>
13  struct void_t_ {
14  using type = void;
15  };
16  template <typename... T>
17  using void_t = typename void_t_<T...>::type;
18 
20  template <typename Default, typename AlwaysVoid, template <typename...> class Op, typename... Args>
21  struct detector {
22  using type = Default;
23  };
24 
26  template <typename Default, template <typename...> class Op, typename... Args>
27  struct detector<Default, void_t<Op<Args...>>, Op, Args...> {
28  using type = Op<Args...>;
29  };
30  }
31 
32  // Op<Args...> if that is a valid type, otherwise Default.
33  template <typename Default, template <typename...> class Op, typename... Args>
34  using detected_or_t = typename details::detector<Default, void, Op, Args...>::type;
35  }
36 }
37 
38 #endif
typename void_t_< T... >::type void_t
Definition: detected.h:17
class MergingTransformer< Out(const vector_of_const_< In > void
Implementation of the detection idiom (negative case).
Definition: detected.h:21
Helper functions to set/get the application return code.
Definition: __init__.py:1
typename details::detector< Default, void, Op, Args... >::type detected_or_t
Definition: detected.h:34