引数のないテンプレート コンストラクターを持つ非テンプレート クラスを作成したいと考えています。
私の理解する限り、それを持つことは不可能です(デフォルトコンストラクタと競合するため -私の言う通りでしょうか?)、回避策は次のとおりです。
class A{
template <typename U> A(U* dummy) {
// Do something
}
};
おそらく、これよりも良い代替手段(またはより良い回避策)があるでしょうか?
ベストアンサー1
コンストラクター テンプレートを呼び出すときにテンプレート引数を明示的に指定する方法はないため、引数の推論を通じて推論する必要があります。これは、次のように記述した場合です。
Foo<int> f = Foo<int>();
は<int>
、型のテンプレート引数リストでありFoo
、そのコンストラクターの引数リストではありません。コンストラクター テンプレートの引数リストを格納する場所はありません。
回避策を使用しても、そのコンストラクタ テンプレートを呼び出すには引数を渡す必要があります。何を達成しようとしているのかがまったくわかりません。