Абстрактная фабрика с необязательным аргументом ctor без вариационных шаблонов - PullRequest
0 голосов
/ 03 апреля 2019

У меня есть классическая абстрактная реализация фабрики, которую я хотел бы предоставить с необязательным аргументом конструктора. Тематический ответ казался простым с использованием шаблонов с переменными значениями, но я застрял с VS2010, который не поддерживает его. Так что по крайней мере один аргумент, подобный этому:

template <class IFTYPE, typename IDTYPE=std::string, typename Args=void >
class AbstractFactory {
  typdef std::shared_ptr<IFTYPE> (*CreateFunc)(Args);
  public:
  std::shared_ptr<IFTYPE> create( IDTYPE id, Args args ) { 
    return nullptr;
  }
};

Проблема в том, что я не могу обработать тип по умолчанию в методе create для void. Поскольку я не могу назвать аргумент void.

Как мне обойти это, сохранив опцию для разных типов аргументов? Частичная специализация не должна работать, так как это изменит подпись create. Какие у меня есть варианты?

Спасибо ...

...