LINUX.ORG.RU

История изменений

Исправление ilammy, (текущая версия) :

Пусть конкретные контейнеры принимают один супер-трейт-шаблон Configuration, который агрегирует в себе всю настраиваемую информацию:

template <typename T, class Configuration = DefaultConfiguration>
class container;
Когда container надо что-то настраиваемое, то он лезет в Configuration::foo.

Далее. Если C++03, то фигачишь список типов из плагинов. (Препроцессорные макросы по вкусу.) Если C++11, то уже есть class... Plugins. Потом делаешь шаблонный Builder, который рекурсивно по одному разбирает плагины и заполняет этот самый Configuration.

Исходная версия ilammy, :

Пусть конкретные контейнеры принимают один супер-трейт-шаблон Configuration, который агрегирует в себе всю настраиваемую информацию:

template <typename T, class Configuration = DefaultConfiguration>
class container;
Когда container надо что-то настраиваемое, то он лезет в
Configuration::foo.

Далее. Если C++03, то фигачишь список типов из плагинов. (Препроцессорные макросы по вкусу.) Если C++11, то уже есть class... Plugins. Потом делаешь шаблонный Builder, который рекурсивно по-одному разбирает плагины и заполняет этот самый Configuration.