Namespaces
Variants

deduction guides for std::shared_ptr

From cppreference.net
Memory management library
( exposition only* )
Allocators
Uninitialized memory algorithms
Constrained uninitialized memory algorithms
Memory resources
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)
ヘッダーで定義 <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}; // このケースでは明示的なデダクションガイドが使用される
}