次のテンプレートがあるとします
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(...)
したので、デフォルトのコンストラクターはオプションではなくなりました。