4 * Author : Elias Josué HAJJAR LLAUQUEN <elias-josue.hajjar-llauquen@epitech.eu>
10 template <typename T, typename... Args>
11 T &SystemManager::add(Args &&...args)
13 auto typeName = std::type_index(typeid(T));
14 auto system = std::make_unique<T>(std::forward<Args>(args)...);
15 if constexpr (requires { T::getRequiredSignature(); }) {
16 this->_signatures[typeName] = T::getRequiredSignature();
20 this->_systems[typeName] = std::move(system);
25 T &SystemManager::getSystem()
27 auto typeName = std::type_index(typeid(T));
28 return *static_cast<T *>(this->_systems.at(typeName).get());