【问题标题】:Default or zero value of unknown template type未知模板类型的默认值或零值
【发布时间】:2016-10-28 13:49:54
【问题描述】:

假设模板函数

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

当发生错误时,它应该返回00.0fnullptr,...取决于T的类型。

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

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

【问题讨论】:

    标签: c++ templates default default-value


    【解决方案1】:

    您可以像return T();return T{};(C++11 起)一样使用value initialization,或者只使用return {};(参见list initialization (since C++11))来返回默认值T

    【讨论】:

    • 你更喜欢哪一个?
    • @Matthias return T();return T{}; 在这里具有相同的效果,对我来说看起来都不错。 return {}; 是最短的,你可能想用它。
    猜你喜欢
    • 1970-01-01
    • 2018-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-09
    • 1970-01-01
    • 1970-01-01
    • 2020-12-02
    相关资源
    最近更新 更多