0

假设我有这个通用功能:

template<typename T>
void foo(T data) {
  if(data == nullptr)
   return;
  //...
}

问题是我不能真正写出那样的东西。如果 T 是原始类型或按值传递的对象,我无法将其与 nullptr 进行比较。

另一方面,如果 T 是一个指向 int 的指针呢?我希望能够将它与 nullptr 进行比较。

有什么办法吗?

4

1 回答 1

4

正如@j_random_hacker 建议的那样,只需重载 foo() 函数。这样,您有 2 种不同的行为,具体取决于您传递给 foo() 的类型

template<typename T>
void foo(T *data)
{
  if(data == nullptr)
    return;
  //...
}

template<typename T>
void foo(T data)
{
  //...
}
于 2014-06-26T09:23:17.973 回答