template<typename C, typename... Args>
void SourcePackage::Loader::component(Args... args, const string &n)
{
+ if(any_of(obj.components.begin(), obj.components.end(), [&n](const Component *c){ return c->get_name()==n; }))
+ throw key_error(n);
C *comp = new C(obj, n, args...);
load_sub(*comp);
obj.components.push_back(comp);