access_guard.emplace();
#endif
- reflector.get_or_create_class<Entity>().set_polymorphic_base<Entity>();
- reflector.get_or_create_class<Component>().set_polymorphic_base<Component>();
+ reflector.get_or_create_class<Entity>();
+ reflector.get_or_create_class<Component>();
}
// Hide ~unique_ptr<Stage> from the header
class Class: public ClassBase
{
public:
- Class(Reflector &r): ClassBase(r, typeid(T)) { }
+ Class(Reflector &);
template<typename B>
void set_polymorphic_base();
}
+template<typename T>
+Class<T>::Class(Reflector &r):
+ ClassBase(r, typeid(T))
+{
+ if constexpr(requires { typename T::PolymorphicBase; })
+ set_polymorphic_base<typename T::PolymorphicBase>();
+}
+
template<typename T>
template<typename B>
inline void Class<T>::set_polymorphic_base()