假设我有这个通用函数:
template<typename T>
void foo(T data) {
if(data == nullptr)
return;
//...
}
问题是我真的不能写这样的东西。如果T是原始类型或按值传递的对象,则无法将其与nullptr进行比较。
另一方面,如果T是一个指向int的指针怎么办?我希望能够将其与nullptr进行比较。
有什么办法吗?
最佳答案
正如@j_random_hacker所建议的,只需重载foo()函数。这样,根据传递给foo()的类型,您会有2种不同的行为
template<typename T>
void foo(T *data)
{
if(data == nullptr)
return;
//...
}
template<typename T>
void foo(T data)
{
//...
}
关于c++ - 带有模板和nullptr的C++通用编程,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24426368/