泛型类型删除值假设你有一个类,如:只有当它是一个指针
template<typename T>
class Foo
{
public:
T value;
public:
Foo(const T& value)
{
this->value = value;
}
public:
~Foo()
{
if(std::is_pointer<T>::value) delete value;
}
}
现在,很明显,如果T
不是指针,编译器将抛出一个错误。例如:
Foo<int> foo(42);
有没有办法成功地检查是否T
是一个指针,删除它,如果它是,没有一个编译器错误?