Интересно, есть ли какой-нибудь элегантный способ (например, this ) для проверки того, что аргумент шаблона получен из заданного класса?В общем:
template<class A, class B>
class MyClass
{
// shold give the compilation error if B is not derived from A
// but should work if B inherits from A as private
}
решение, предоставленное в другом вопросе , работает только тогда, когда B наследует от A как public:
class B: public A
однако я бы предпочел нетакое ограничение:
class A{};
class B : public A{};
class C : private A{};
class D;
MyClass<A,B> // works now
MyClass<A,C> // should be OK
MyClass<A,D> // only here I need a compile error
Заранее спасибо !!!