Вы можете использовать несколько пакетов параметров, если вы поставили Конфиг последним:
template <typename Impl, typename... Modules, typename... Config>
Impl create(Ioc& ioc, Config const& ... config) {
return Impl{ioc.create<Modules>()..., config ...};
}
Вы также можете разделить пакеты параметров с помощью лямбды:
template <typename Impl, typename ... Modules>
auto create = [](Ioc& ioc, auto const& ... config) -> Impl {
return Impl{ioc.create<Modules>()..., config ...};
};
Это будет принимать любое число параметров после первого Config
. Чтобы ввести только ноль в один дополнительный аргумент, добавьте
static_assert(sizeof...(config) <= 1);