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好的,謝謝,我對此毫不知情。 –