bool implements(const Feature*) const { const Feature& f = static_cast<Feature&>(_boost_get_mixin_feature((Feature*)nullptr)); BOOST_ASSERT(f.id != INVALID_FEATURE_ID); // intentionally disregarding the actual feature return internal_implements(f.id, typename Feature::feature_tag()); }
bool implements(const Feature*) const noexcept { const Feature& f = static_cast<const Feature&>(_dynamix_get_mixin_feature_fast(static_cast<Feature*>(nullptr))); DYNAMIX_ASSERT(f.id != INVALID_FEATURE_ID); // intentionally disregarding the actual feature, // because of potential multiple implementations return internal_implements(f.id, typename Feature::feature_tag()); }