std::shared_ptr 的推导指南
C++17
template< class T >
shared_ptr( std::weak_ptr<T> ) -> shared_ptr<T>;
template< class T, class D >
shared_ptr( std::unique_ptr<T, D> ) -> shared_ptr<T>;
这些推导指南是为 std::shared_ptr
提供的,以处理隐式推导指南所遗漏的边缘情况。
请注意,从指针类型中进行类模板参数推导是不可能的,因为无法区分从 new
的数组形式和非数组形式获得的指针。
示例
include <memory>
int main()
{
auto p = std::make_shared<int>(42);
std::weak_ptr w{p}; // explicit deduction guide is used in this case
std::shared_ptr p2{w}; // explicit deduction guide is used in this case
}