diff --git a/src/ifcparse/aggregate_of_instance.h b/src/ifcparse/aggregate_of_instance.h index 59f335f79d..c6bf8f5921 100644 --- a/src/ifcparse/aggregate_of_instance.h +++ b/src/ifcparse/aggregate_of_instance.h @@ -45,8 +45,11 @@ public: template typename U::list::ptr as() { typename U::list::ptr r(new typename U::list); - const bool all = !U::Class().as_entity(); - for (it i = begin(); i != end(); ++i) if (all || (*i)->declaration().is(U::Class())) r->push((U*)*i); + for (it i = begin(); i != end(); ++i) { + if ((*i)->as()) { + r->push((*i)->as()); + } + } return r; } void remove(IfcUtil::IfcBaseClass*);