template<typename T>
class C
{
void f() { }
};
/*template<typename T>
void C<T*>::f() { }*/
template<>
void C<int*>::f() { }
コメントを削除すると、コードはコンパイルされません。partial specialization
私はこれを知っています(そして、私たちが を持っているべきであることも知ってC<T*>
います)が、そのような動作を説明する標準の単語を見つけることができません。私14 par
は標準を数回読み直しました。これを説明する見積もりまたは基準値を教えていただけますか?
編集。
template<typename T>
class C
{
template<typename U>
struct S { };
};
// #1
/*template<typename T>
class C<T*>
{
template<typename U>
struct S { };
};*/
// #2
/*template<typename T>
template<typename U>
struct C<T*>::S<U*> { };*/
template<>
template<typename U>
struct C<int*>::S<U*> { };
次にコメントのみを削除すると、#2 - コードはコンパイルされません。