可能性の重複:
C++ invoke explicit template constructorコンストラクタテンプレートの選択方法は?
まず私はテンプレートメンバ関数を持つクラスのデータを持っている想像: -
class Data
{
public:
template <class Loader> void load(const std::string& filename);
};
私はこのようにこれを使用することができます -
をData data;
data.load<SomeLoader>(filename);
とすべて正常に動作します。コンパイル時に、クラスのどのクラスを使用してデータをロードするかをテンプレートパラメータで選択できます。完璧にコンパイルするようだ
私はコンストラクタでこれを行う方法を動作することはできませんが...
class Data
{
public:
template <class Loader> Data(const std::string& filename);
};
が、私は実際には関数を呼び出す方法を動作するように見えることはできません。
Data<SomeLoader> data;
テンプレートのコンストラクタではなくクラステンプレートを呼び出すため、これは機能しません。
ここにいくつかの構文がありますか? (SomeLoader型のコンストラクタパラメータを追加すると、コンパイラが使用するクラスを正しく推測しますが、ここで行う必要はありません)
ああ、私はこれを探して何も見つけられませんでした。リンクを追加していただきありがとうございます – jcoder