【发布时间】:2021-12-15 03:33:10
【问题描述】:
当我阅读代码时:
DefaultSPStorage() : pointee_(Default()) {}
DefaultSPStorage(const DefaultSPStorage&) : pointee_(nullptr) {}
template<class U>
DefaultSPStorage(const DefaultSPStorage<U>) : pointee_(nullptr) {}
explicit DefaultSPStorage(const StoredType& p) : pointee_(p) {}
我对第三个模板化 c'tor 感到困惑。
如果有人能告诉我这样做的目的,我将不胜感激。
【问题讨论】:
-
请提供minimal reproducible example。然而,第三个构造函数看起来像一个转换构造函数(可以与另一个持有任何指针的智能指针一起使用)。然而,这两个复制构造函数似乎都没有复制任何东西。这就是我会感到困惑的地方。如果不打算复制构造,我会删除这些构造函数以防止意外使用......(但是,也许,它的上下文太少了,无法证明这一点。)
-
你应该至少提供类声明