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

Posted

技术标签:

【中文标题】未知模板类型的默认值或零值【英文标题】: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++ 中执行此操作?

【问题讨论】:

【参考方案1】:

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

【讨论】:

你更喜欢哪一个? @Matthias return T();return T; 在这里具有相同的效果,对我来说看起来都不错。 return ; 是最短的,你可能想用它。

以上是关于未知模板类型的默认值或零值的主要内容,如果未能解决你的问题,请参考以下文章

SQL:使用NULL值与默认值

React:没有负值、小数或零值的数字输入

go语言学习笔记 — 基础 — 基本语法 — 常量与变量 — 变量的类型零值

在传递给Postgres之前使用Postgres默认值或生成它们是更好的做法吗?

C#中泛型参数的空值或默认比较

python函数使用多个默认值或根本没有默认值