- list<ObjectFile *> objs;
- for(list<Target *>::const_iterator i=sources.begin(); i!=sources.end(); ++i)
- {
- if(ObjectFile *obj = dynamic_cast<ObjectFile *>(*i))
- objs.push_back(obj);
- else
- throw invalid_argument("MsvcArchiver::create_target");
- }
+ vector<ObjectFile *> objs;
+ objs.reserve(sources.size());
+ for(Target *s: sources)
+ objs.push_back(&dynamic_cast<ObjectFile &>(*s));