deduction guides for std::shared_ptr
From cppreference.com
< cpp | memory | shared ptr
C++
Memory management library
|
|
|
std::shared_ptr
Member functions | ||||
Modifiers | ||||
Observers | ||||
(C++17)
|
||||
(until C++20*)
|
||||
(C++26)
|
||||
(C++26)
|
||||
Non-member functions | ||||
(until C++20)
(until C++20)
(until C++20)
(until C++20)
(until C++20)
(C++20)
|
||||
functions (until C++26*)
|
||||
Helper classes | ||||
(C++20)
|
||||
Deduction guides(C++17) |
Defined in header <memory>
|
||
template
<
class T >
shared_ptr( std::weak_ptr <T> ) - > shared_ptr<T> ; |
(1) | (since C++17) |
template
<
class T, class D >
shared_ptr( std::unique_ptr <T, D> ) - > shared_ptr<T> ; |
(2) | (since C++17) |
These deduction guides are provided for std::shared_ptr
Note that there is no class template argument deduction from pointer types because it is impossible to distinguish pointers obtained from array and non-array forms of new
Example
Run this code
#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 }