18 #ifndef IGNITION_PHYSICS_FEATURELIST_HH_ 19 #define IGNITION_PHYSICS_FEATURELIST_HH_ 32 template <
typename...>
struct CombineLists;
33 template <bool,
typename...>
struct SelfConflict;
34 template <
typename>
struct IterateTuple;
50 template <
typename... FeaturesT>
51 struct FeatureList : detail::IterateTuple<std::tuple<FeaturesT...>>
58 typename detail::CombineLists<FeaturesT...>::Result;
67 public:
template <
typename F>
68 static constexpr
bool HasFeature();
83 public:
template <
typename SomeFeatureList,
84 bool AssertNoConflict =
false>
85 static constexpr
bool ConflictsWith();
92 static_assert(!detail::SelfConflict<true, FeaturesT...>::value,
93 "FeatureList ERROR: YOUR LIST CONTAINS CONFLICTING FEATURES!");
100 template <
typename... ConflictingFeatures>
107 template <
typename... RequiredFeatures>
112 #include <ignition/physics/detail/FeatureList.hh> If your feature is known to require any other features, then you should have your feature class inher...
Definition: FeatureList.hh:108
void RequiredFeatures
All the features required by this FeatureList will be included in CombineLists.
Definition: FeatureList.hh:89
If your feature is known to conflict with any other feature, then you should have your feature class ...
Definition: FeatureList.hh:101
typename detail::CombineLists< FeaturesT... >::Result Features
Definition: FeatureList.hh:58
Use a FeatureList to aggregate a list of Features.
Definition: FeatureList.hh:51