У меня есть шаблон класса с конструктором, который принимает std::vector<T>
. Для каждого объекта, кроме одного, я хочу, чтобы он выполнял операцию A. Но для этого одного объекта я хочу, чтобы он делал другие вещи B.
Есть ли возможность создать явное создание экземпляра только конструктора для шаблонного класса? Я надеюсь, что это описано достаточно точно.
Привет
Обновление: теперь я реализовал контрольный пример:
//header
Container(const std::vector<T>& source)
{...}
//source code
template <> Container<int>::Container(const std::vector<int>& source)
{
throw 42;
}
Этот пример компилируется, но не работает. Я экспортирую это в dll и хочу, чтобы он вызывался всякий раз, когда я пытаюсь создать экземпляр класса с универсальным параметром int. Но, как и сейчас, он вызывает только стандартный конструктор, используемый для каждого другого объекта. Могу ли я внести изменения в объявление?
Обновление: мне удалось! Просто пришлось скопировать его в заголовочный файл.
Обновление: ОК, теперь у меня другая проблема. Я могу специализироваться на «простых» типах, но не на шаблонах. Я попробовал это так:
template<typename T>
Container<MyClass<T>>::Container(const std::vecror<MyClass<T>>& source)
{...}
Я хочу специализировать его для каждого объекта MyClass, но сам MyClass сможет работать как шаблон.