19 template <
class TProcess,
typename TReturn,
typename TParticle>
22 typename TParticle::node_type const&,
23 typename TParticle::node_type const&> {
27 TReturn, TParticle&,
typename TParticle::node_type
const&,
28 typename TParticle::node_type
const&>::testSignature;
32 static std::false_type
test(...);
36 static decltype(testSignature(&T::template doBoundaryCrossing<TParticle>))
test(
41 static decltype(testSignature(&T::doBoundaryCrossing))
test(std::nullptr_t);
48 using type = decltype(test<std::decay_t<TProcess>>(
nullptr));
49 static const bool value = type::value;
56 template <
class TProcess,
typename TReturn,
typename TParticle>
57 bool constexpr has_method_doBoundaryCrossing_v =
traits test for BoundaryCrossingProcess::doBoundaryCrossing method
`, since they are used everywhere as integral part of the framework.
static decltype(testSignature(&T::template doBoundaryCrossing< TParticle >)) test(std::nullptr_t)
templated parameter option
static decltype(testSignature(&T::doBoundaryCrossing)) test(std::nullptr_t)
non templated parameter option
Helper traits class (partial) for static compile time checking.