テンプレート化されたコンストラクターを持つクラスで、make_shared
またはを呼び出すにはどうすればよいですか? make_unique
次に例を示します。
class A
{
/// constructor shared ptr
A(shared_ptr<X> x) ...
/// constructor that creates new shared ptr
template <class T> A() : A(make_shared<T>(...)) {}
};
make_shared<A<T>>()
これは、テンプレート化されたコンストラクターではなく、テンプレート化されたクラス用であるため、意味がありません (コンパイルもしません)。
make_shared<A><T>()
コンパイルもmake_shared<A>(<T>())
コンパイルもせず、本来あるべきようにも見えません。同上make_shared<A, T>()
への呼び出しでコンストラクター呼び出しのテンプレートを指定する方法はありますmake_shared
か? 答えはmake_unique
;に当てはまると思います。そうでない場合は、それを示してください。ありがとう!
(テンプレートがどのように機能するかを明確にするために、コードを編集しました。)