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