18 #ifndef IGNITION_PHYSICS_TEMPLATEHELPERS_HH_ 19 #define IGNITION_PHYSICS_TEMPLATEHELPERS_HH_ 21 #include <type_traits> 32 template <
class... T>
struct type { };
36 template <
typename...>
57 template <
typename To,
typename From>
60 template <
typename To,
typename From>
81 #define IGN_PHYSICS_CREATE_SELECTOR(X) \ 82 template<typename InFeature> \ 85 template<typename F, typename PolicyT, typename FeaturesT, \ 86 typename = ::ignition::physics::void_t<>> \ 87 struct Implementation \ 89 using type = ::ignition::physics::Empty; \ 92 template<typename F, typename PolicyT, typename FeaturesT> \ 93 struct Implementation<F, PolicyT, FeaturesT, \ 94 ::ignition::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; \ Useful as a blank placeholder in template metaprogramming.
Definition: TemplateHelpers.hh:28
void void_t
Definition: TemplateHelpers.hh:37
Contains a static constexpr field named value which will be true if the type From has a const-quality...
Definition: TemplateHelpers.hh:58
Definition: TemplateHelpers.hh:61
This can be used to turn a type into a function argument, which is useful for template metaprogrammin...
Definition: TemplateHelpers.hh:32