在我做的一般容器的析构函数中,我尝试删除元素,如果它们是指针,所以我尝试下面。但是,当我使用T = double进行测试时,编译器显示错误消息,即删除必须后跟指针。我该怎么做呢?
template<class T> static void deleteIfPointer(T t)
{
if(std::is_pointer<T>::value)
{
std::cout << "is pointer" << std::endl;
delete t;
}
else
std::cout << "not pointer" << std::endl;
}
答案 0 :(得分:8)
template <class T>
static void deleteIfPointer(const T& t)
{
std::cout << "not pointer" << std::endl;
}
template <class T>
static void deleteIfPointer(T* t)
// ^
{
std::cout << "is pointer" << std::endl;
delete t;
}