Re: knowing the instance of a template when compiling the destructor
of a class
On 2007-11-01 10:50, nick4ng@googlemail.com wrote:
If I have a templated constructor, there is a way to know, at compile
time, the instance when compiling the destructor?
To be clearer my problem is that I have a templated constructor that
is empty for particular arguments. I need to have an empty destructor
in this case as well.
Is it possible?
You mean something like this:
#include <iostream>
template<typename T>
class Foo
{
T* t;
public:
Foo();
~Foo();
};
template<typename T>
Foo<T>::Foo()
{
t = new T(); // Should use initialisation list
}
template<typename T>
Foo<T>::~Foo()
{
delete t;
}
template<>
Foo<int>::Foo()
{
}
template<>
Foo<int>::~Foo()
{
}
int main()
{
Foo<double> d;
Foo<int> i;
}
When instantiating Foo with an int the special constructor (and later
destructor) will be used. Notice however that I think it is a bad idea
to specialise the destructor if it can be avoided. It is better to just
set t to 0 in Foo<int>'s constructor and not specialise the destructor.
--
Erik Wikstr??m