调用std :: make_shared的std :: forward和factory

时间:2017-07-31 12:50:27

标签: c++11 forward make-shared

我有这样的代码......

X* raw = ::new X("abc");
// do something benign to object
std::shared_ptr<X> ptr(raw);

现在考虑使用对象工厂......

template<typename T, typename... A>
std::shared_ptr<T> factory(A&&... args) {
    auto ptr = std::make_shared<T>(std::forward<A>(args)...);
    // do something benign to object
    return ptr;
}

std::shared_ptr<X> ptr = factory<X>("abc");    

这是一个简化的示例,但是当我使用看起来是由于共享指针损坏的工厂时,我看到一个无法解释的崩溃。

我不熟悉std::make_shared的内部,但我想知道它是否会像参数转发到展示位置::new那样,并且这种链转发是一个问题。

0 个答案:

没有答案