Go to the documentation of this file.
18#ifndef GZ_PHYSICS_TEMPLATEHELPERS_HH_
19#define GZ_PHYSICS_TEMPLATEHELPERS_HH_
32 template <
class... T>
struct type { };
36 template <
typename...>
57 template <
typename To,
typename From>
60 template <
typename To,
typename From>
81#define GZ_PHYSICS_CREATE_SELECTOR(X) \
82 template<typename InFeature> \
85 template<typename F, typename PolicyT, typename FeaturesT, \
86 typename = ::gz::physics::void_t<>> \
87 struct Implementation \
89 using type = ::gz::physics::Empty; \
92 template<typename F, typename PolicyT, typename FeaturesT> \
93 struct Implementation<F, PolicyT, FeaturesT, \
94 ::gz::physics::void_t< \
95 typename F::template X <PolicyT, FeaturesT>>> \
97 using type = typename F::template X <PolicyT, FeaturesT>; \
100 template <typename PolicyT, typename FeaturesT> \
101 using type = typename Implementation<InFeature, PolicyT, FeaturesT>::type; \