История изменений
Исправление ilammy, (текущая версия) :
Пусть конкретные контейнеры принимают один супер-трейт-шаблон Configuration, который агрегирует в себе всю настраиваемую информацию:
template <typename T, class Configuration = DefaultConfiguration>
class container;
Configuration::foo
.Далее. Если C++03, то фигачишь список типов из плагинов. (Препроцессорные макросы по вкусу.) Если C++11, то уже есть class... Plugins
. Потом делаешь шаблонный Builder, который рекурсивно по одному разбирает плагины и заполняет этот самый Configuration.
Исходная версия ilammy, :
Пусть конкретные контейнеры принимают один супер-трейт-шаблон Configuration, который агрегирует в себе всю настраиваемую информацию:
template <typename T, class Configuration = DefaultConfiguration>
class container;
Configuration::foo.
Далее. Если C++03, то фигачишь список типов из плагинов. (Препроцессорные макросы по вкусу.) Если C++11, то уже есть class... Plugins
. Потом делаешь шаблонный Builder, который рекурсивно по-одному разбирает плагины и заполняет этот самый Configuration.