1
假设我有以下模板模板成员默认初始化
template <typename T>
class{
T t;
};
现在,我想补充一点,与它的类型的默认值初始化吨构造。也就是说,对于数字类型,t应该用0
初始化,对于指针,t应该用nullptr
初始化。最后,还可能有其他类型的结构。在这里,一个好的初始化将是默认的构造函数(无论如何都会被调用,所以我不需要在这里做任何事情)。
在conlusion我期待这样的事情:
template<typename T>
class X{
T t;
X() : t(default_value<T>::value);
}
正如我想象中的语法所指出的,我认为这可能是可能以某种模板与携带的默认值不同的专业。但是如何处理结构和类?由于我指定了t(...)
,所以默认构造函数不再是一个选项。
使用{}是IMO不是一个好主意,如果你想有一个特定的初始化(在这种情况下,你想要初始化值)。例如{}现在如果T是引用类型,那么您默默地具有未定义的行为。 –
@ JohannesSchaub-litb好的,谢谢,我对此毫不知情。 –