テンプレート化されたコンストラクターを持つクラスで、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;に当てはまると思います。そうでない場合は、それを示してください。ありがとう!
(テンプレートがどのように機能するかを明確にするために、コードを編集しました。)