このために探しましたが、同様の質問を見つけることができません。ある場合は、この質問を閉じてください。これは私の実際のコードではなく、デモンストレーションの単なる例です:-
#include <iostream>
// Normal template class with a destructor
template <class T> class Test
{
public:
~Test() { std::cout << "Normal \n";}
};
// Partial specialization for arrays
template<class T> class Test<T[]>
{
public:
~Test() { std::cout << "Array \n"; }
};
int main()
{
Test<int[3]> i;
}
これをコンパイルすると、配列の専用バージョンは呼び出されません。テンプレートを次のように置き換えると
template<class T> class Test<T[3]>
{
public:
~Test() { std::cout << "Array \n"; }
};
次に、特殊化を呼び出しますが、指定されたサイズの配列だけでなく、任意の配列に対してこれを呼び出す必要があります。すべてのアレイに使用されるスペシャライゼーションを作成する方法はありますか?