【发布时间】:2012-08-29 07:53:21
【问题描述】:
假设我有以下模板
template <typename T>
class{
T t;
};
现在,我想添加一个构造函数,用它的类型的默认值初始化 t。也就是说,对于数值类型,t应该用0初始化,对于指针,t应该用nullptr初始化。最后,可能还有其他类型,例如结构。在这里,一个好的初始化将是默认构造函数(无论如何都会调用它,所以我不必在这里做任何事情)。
总之,我正在寻找这样的东西:
template<typename T>
class X{
T t;
X() : t(default_value<T>::value);
}
正如我想象的语法所指出的,我认为可以使用具有不同专业化的某种模板来承载默认值。但是如何处理结构和类呢?由于我已经指定了t(...),所以默认构造函数不再是一个选项。
【问题讨论】:
标签: c++ templates initialization default-value