20 template <
class TProcess,
typename TReturn,
typename... TArgs>
28 static std::false_type
test(...);
32 static decltype(testSignature(&T::template doInteraction<TArgs...>))
test(
37 static decltype(testSignature(&T::doInteraction))
test(std::nullptr_t);
44 using type = decltype(test<std::decay_t<TProcess>>(
nullptr));
45 static const bool value = type::value;
51 template <
class TProcess,
typename TReturn,
typename... TArgs>
52 bool constexpr has_method_doInteract_v =
59 template <
class TProcess,
typename TReturn,
typename... TArgs>
68 static std::false_type
test(...);
72 static decltype(testSignature(&T::template getInteractionLength<TArgs...>))
test(
77 static decltype(testSignature(&T::getInteractionLength))
test(std::nullptr_t);
84 using type = decltype(test<std::decay_t<TProcess>>(
nullptr));
85 static const bool value = type::value;
92 template <
class TProcess,
typename TReturn,
typename... TArgs>
93 bool constexpr has_method_getInteractionLength_v =
static decltype(testSignature(&T::template getInteractionLength< TArgs... >)) test(std::nullptr_t)
templated parameter option
traits test for InteractionProcess::doInteraction method
static decltype(testSignature(&T::template doInteraction< TArgs... >)) test(std::nullptr_t)
signature of templated method
The cascade namespace assembles all objects needed to simulate full particles cascades.
traits test for InteractionProcess::getInteractionLength method
Helper traits class (partial) for static compile time checking.
static decltype(testSignature(&T::doInteraction)) test(std::nullptr_t)
signature of non-templated method
static decltype(testSignature(&T::getInteractionLength)) test(std::nullptr_t)
non templated parameter option