deduction guides for std::shared_ptr
From cppreference.com
< cpp | memory | shared ptr
C++
Feature test macros (C++20)
Concepts library (C++20)
Metaprogramming library (C++11)
Ranges library (C++20)
Filesystem library (C++17)
Concurrency support library (C++11)
Execution control library (C++26)
Memory management library
(exposition only*)
(C++11)
(C++23)
(C++11)
(C++17)
(C++11)
(C++11)
(C++20)
(C++20)
(C++17)
(C++11)
(C++17)
(C++20)
(C++17)
(C++17)
(C++17)
(C++17)
(C++17)
(C++17)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++17)
(C++17)
(C++17)
(C++17)
(C++17)
(C++17)
(C++17)
(C++17)
Uninitialized storage (until C++20)
(until C++20*)
(until C++20*)
(until C++20*)
Garbage collector support (until C++23)
(C++11)(until C++23)
(C++11)(until C++23)
(C++11)(until C++23)
(C++11)(until C++23)
(C++11)(until C++23)
(C++11)(until C++23)
(C++11)
(C++11)
(C++17)
(C++20)
(C++17)
(C++11)
(C++11)
(C++11)
(until C++17*)
(C++11)
(C++17)
(C++26)
(C++26)
(C++11)
(C++11)
(C++11)
(C++23)
(C++23)
(C++11)
(C++20)
(C++11)
(C++11)
(C++20)
(C++26)
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)
shared_ptr( std::weak_ptr <T> ) -> shared_ptr<T>;
template< class T, class D >
shared_ptr( std::unique_ptr <T, D> ) -> shared_ptr<T>;
(2)
(since C++17)
shared_ptr( std::unique_ptr <T, D> ) -> shared_ptr<T>;
These deduction guides are provided for std::shared_ptr to account for the edge cases missed by the implicit deduction guides.
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.
[edit] 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 }