パラメータのないコンストラクタテンプレートは可能ですか? 質問する

パラメータのないコンストラクタテンプレートは可能ですか? 質問する

引数のないテンプレート コンストラクターを持つ非テンプレート クラスを作成したいと考えています。

私の理解する限り、それを持つことは不可能です(デフォルトコンストラクタと競合するため -私の言う通りでしょうか?)、回避策は次のとおりです。

class A{
   template <typename U> A(U* dummy) {
       // Do something
   }
};

おそらく、これよりも良い代替手段(またはより良い回避策)があるでしょうか?

ベストアンサー1

コンストラクター テンプレートを呼び出すときにテンプレート引数を明示的に指定する方法はないため、引数の推論を通じて推論する必要があります。これは、次のように記述した場合です。

Foo<int> f = Foo<int>();

<int>、型のテンプレート引数リストでありFoo、そのコンストラクターの引数リストではありません。コンストラクター テンプレートの引数リストを格納する場所はありません。

回避策を使用しても、そのコンストラクタ テンプレートを呼び出すには引数を渡す必要があります。何を達成しようとしているのかがまったくわかりません。

おすすめ記事