diff --git a/libs/app/include/psemek/app/default_application_factory.hpp b/libs/app/include/psemek/app/default_application_factory.hpp index 7fdb0e37..16b0f708 100644 --- a/libs/app/include/psemek/app/default_application_factory.hpp +++ b/libs/app/include/psemek/app/default_application_factory.hpp @@ -7,16 +7,18 @@ namespace psemek::app { - template - std::unique_ptr default_application_factory(application::options const & options) + template + std::unique_ptr default_application_factory(application::options const & options, Factory && factory) { struct factory_impl : application::factory { application::options opts; + Factory factory; - factory_impl(application::options const & options) + factory_impl(application::options const & options, Factory && factory) : opts(options) + , factory(std::move(factory)) {} application::options options() override @@ -26,11 +28,20 @@ namespace psemek::app std::unique_ptr create(application::options const & options, application::context const & context) override { - return std::make_unique(options, context); + return factory(options, context); } }; - return std::make_unique(options); + return std::make_unique(options, std::move(factory)); + } + + template + std::unique_ptr default_application_factory(application::options const & options) + { + return default_application_factory(options, [](auto const & options, auto const & context){ + return std::make_unique(options, context); + }); } } +