void PoolPool::check_types()
{
- unsigned g = reflector.get_generation();
- if(g==reflector_gen)
- return;
-
for(const auto &p: pools)
{
const Reflection::ClassBase *type = &p->get_reflected_type();
p->set_parent_pool(*parent);
}
- reflector_gen = g;
+ reflector_gen = reflector.get_generation();
}
std::unique_ptr<PoolBase> &ptr = pools[id];
if(!ptr)
+ {
ptr = std::make_unique<Pool<T>>(reflector);
-
- check_types();
+ check_types();
+ }
+ else if(reflector.get_generation()!=reflector_gen)
+ check_types();
return *static_cast<Pool<T> *>(ptr.get());
}