未知模板类型的默认值或零值

Default or zero value of unknown template type

假设模板函数

template<typename T>
T foo(){
  // ...
  // Error occured
  if(error)
     return 0;
  // ...
}

哪个应该 return 0, 0.0f, nullptr, ... 取决于类型 T,当发生错误时。

如何获取未知模板类型的0? 在 C# 中,您可以编写 default(T) 来执行此操作。

如何在 C++ 中执行此操作?

可以使用value initialization like return T(); or return T{}; (since C++11), or just return {}; (see list initialization (since C++11))来return默认值T