如何调用具有模板化构造函数的类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
;如果不是,请指出。谢谢!
(为了阐明模板是如何工作的,我编辑了代码。)