std::shared_ptr 的推导指引
来自cppreference.com
std::shared_ptr 的推导指引
|
|
| 成员函数 |
| 修改器 |
| 观察器 |
(C++17) |
(C++20 前*) |
(C++26) |
(C++26) |
| 非成员函数 |
(C++20 前)(C++20 前)(C++20 前)(C++20 前)(C++20 前)(C++20) |
函数 (C++26 前*) |
| 辅助类 |
(C++20) |
| 推导指引(C++17) |
| 在标头 <memory> 定义
|
||
template< class T >
shared_ptr( std::weak_ptr<T> ) -> shared_ptr<T>;
|
(1) | (C++17 起) |
template< class T, class D >
shared_ptr( std::unique_ptr<T, D> ) -> shared_ptr<T>;
|
(2) | (C++17 起) |
为 std::shared_ptr 提供此推导指引,以囊括隐式推导指引所错失的极端情况。
注意没有从指针类型的类模板实参推导,因为不可能辨别获得自 new 的数组和非数组形式的指针。
#include <memory>
int main()
{
auto p = std::make_shared<int>(42);
std::weak_ptr w{p}; // 用于此情况的显式推导指引
std::shared_ptr p2{w}; // 用于此情况的显式推导指引
}