名前空間
変種
操作

std::shared_ptr の推論ガイド

From cppreference.com
< cpp‎ | memory‎ | shared ptr
 
 
メモリ管理ライブラリ
(説明用*)
未初期化メモリのアルゴリズム
(C++17)
(C++17)
(C++17)
制約付き未初期化
メモリアルゴリズム
Cライブラリ

アロケータ
メモリリソース
ガベージコレクションのサポート
(C++11)(C++23まで)
(C++11)(C++23まで)
(C++11)(C++23まで)
(C++11)(C++23まで)
(C++11)(C++23まで)
(C++11)(C++23まで)
未初期化ストレージ
(C++20まで*)
(C++20まで*)
明示的な生存期間管理
 
 
ヘッダ <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
}
English 日本語 中文(简体) 中文(繁體)