У меня есть следующий класс шаблонов:
template<class I>
class T : public I
{
// ...
};
Этот шаблонный класс необходимо вывести один раз (и только один раз) для заданного параметра шаблона I
.
class A : public T<U> {}; // ok
class B : public T<V> {}; // ok
class C : public T<U> {}; // compile error
Класс шаблона T
может быть адаптирован для достижения такого поведения (в то время как классы A
, B
, U
, V
не могут); однако T
не должен иметь никаких знаний о производных классах A
, B
, C
.
Есть ли способ предотвратить получение такого класса шаблонов более одного раза? Идеально выдавать ошибку компиляции в таком случае или, по крайней мере, ошибку компоновщика.