20 template <
class TProcess,
typename TReturn,
typename... TArgs>
28 static std::false_type
test(...);
32 static decltype(testSignature(&T::template doStack<TArgs...>))
test(std::nullptr_t);
35 template <
template <
typename>
typename T>
36 static decltype(testSignature(&T<TArgs...>::template doStack))
test(std::nullptr_t);
40 static decltype(testSignature(&T::doStack))
test(std::nullptr_t);
47 using type = decltype(test<std::decay_t<TProcess>>(
nullptr));
48 static const bool value = type::value;
54 template <
class TProcess,
typename TReturn,
typename... TArgs>
55 bool constexpr has_method_doStack_v =
traits test for StackProcess::doStack method
static decltype(testSignature(&T< TArgs... >::template doStack)) test(std::nullptr_t)
templated-template parameter option
static decltype(testSignature(&T::doStack)) test(std::nullptr_t)
non-templated parameter option
`, since they are used everywhere as integral part of the framework.
Helper traits class (partial) for static compile time checking.
static decltype(testSignature(&T::template doStack< TArgs... >)) test(std::nullptr_t)
templated parameter option