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

Mat*_*ias 5 c++ templates default default-value

假设模板功能

template<typename T>
T foo(){
  // ...
  // Error occured
  if(error)
     return 0;
  // ...
}
Run Code Online (Sandbox Code Playgroud)

这应该返回0,0.0f,nullptr,...取决于类型T,当错误发生.

如何获取0未知模板类型?在C#中你可以写default(T)这个来做.

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

son*_*yao 7

您可以使用值初始化return T();或者return T{};(因为C++ 11),或者只return {};(见列表初始化(因为C++ 11) )返回的默认值T.