たとえば、特定のクラスから継承したり、型特性を介して表現できる他の制約に準拠したりするクラス型にのみ使用される部分的なテンプレートの特殊化を作成することは可能ですか?つまり、次のようなものです。
class A{}
class B : public A{}
template<typename T>
class X{
int foo(){ return 4; }
};
//Insert some magic that allows this partial specialization
//only for classes which are a subtype of A
template<typename T>
class X<T>{
int foo(){ return 5; }
};
int main(){
X<int> x;
x.foo(); //Returns 4
X<A> y;
y.foo(); //Returns 5
X<B> z;
z.foo(); //Returns 5
X<A*> x2;
x2.foo(); //Returns 4
}