From 05ff115820656266b9fec1adbef2f005ef0b44a4 Mon Sep 17 00:00:00 2001 From: frostbane Date: Sun, 30 Nov 2025 01:19:17 +0900 Subject: [PATCH 1/2] add default constructor for adding a base class returning a derived class --- src/injectpp/config.hpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/injectpp/config.hpp b/src/injectpp/config.hpp index 68b5da5..9fa3ae3 100644 --- a/src/injectpp/config.hpp +++ b/src/injectpp/config.hpp @@ -7,6 +7,13 @@ namespace nt { namespace ioc { +template +std::unique_ptr +default_factory_as(Deps*... deps) +{ + return std::make_unique(deps...); +} + template std::unique_ptr default_factory(Deps*... deps) @@ -17,6 +24,12 @@ default_factory(Deps*... deps) class Config { public: + template + void add_as() + { + add(default_factory_as); + } + template void add() { From 5183cf44cb9e8c0b9843e53d3cce345b747dd0e3 Mon Sep 17 00:00:00 2001 From: frostbane Date: Sun, 30 Nov 2025 12:48:43 +0900 Subject: [PATCH 2/2] refactor the default factory --- src/injectpp/config.hpp | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/src/injectpp/config.hpp b/src/injectpp/config.hpp index 9fa3ae3..a2ca5cc 100644 --- a/src/injectpp/config.hpp +++ b/src/injectpp/config.hpp @@ -9,13 +9,6 @@ namespace nt { namespace ioc { template std::unique_ptr -default_factory_as(Deps*... deps) -{ - return std::make_unique(deps...); -} - -template -std::unique_ptr default_factory(Deps*... deps) { return std::make_unique(deps...); @@ -27,13 +20,13 @@ class Config template void add_as() { - add(default_factory_as); + add(default_factory); } template void add() { - add(default_factory); + add(default_factory); } template