'declaration' : destructors cannot be templates
Destructors cannot be overloaded, so declaring a destructor as a template (which would define a set of destructors) is not allowed.
Example
class X { public: template<typename T> ~X() {...} //Error };