std::shared_ptr の推論ガイド
From cppreference.com
< cpp | memory | shared ptr
| ヘッダ <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}; // explicit deduction guide is used in this case std::shared_ptr p2{w}; // explicit deduction guide is used in this case }