gpt4 book ai didi

c++ - 如何使用模板化构造函数调用 make_shared 或 make_unique

转载 作者:太空狗 更新时间:2023-10-29 20:37:30 25 4
gpt4 key购买 nike

如何调用make_sharedmake_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 ;如果没有,请指出。谢谢!

(为了阐明模板的工作原理,我编辑了代码。)

最佳答案

没有模板参数推导,根本无法使用类构造函数模板。因此,任何模板参数都必须从提供的参数中推导出来,而不是在调用时明确指定。

这不限于任何 make_* 函数;这根本不是初始化对象的方法。无法调用该构造函数。您的编译器不需要提示此构造函数,但根本无法调用它。

关于c++ - 如何使用模板化构造函数调用 make_shared 或 make_unique,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34522231/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com