Erro do compilador C2897
um destruidor/finalizador não pode ser um modelo de função
Não é possível sobrecarregar destruidores ou finalizadores, portanto, não é permitido declarar um destruidor como um modelo (que definiria um conjunto de destruidores).
Exemplos
A amostra a seguir gera C2897.
// C2897.cpp
// compile with: /c
class X {
public:
template<typename T> ~X() {} // C2897
};
A amostra a seguir gera C2897.
// C2897_b.cpp
// compile with: /c /clr
ref struct R2 {
protected:
template<typename T> !R2(){} // C2897 error
};