У меня есть следующий класс шаблонов:
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.
Есть ли способ предотвратить получение такого класса шаблонов более одного раза? Идеально выдавать ошибку компиляции в таком случае или, по крайней мере, ошибку компоновщика.