shared_ptrで配列を使用する

shared_ptrで配列型 (例: int [])を使用する方法


C++17以降ではT[]がサポートされているためshared_ptr<int []>と宣言するだけです。例えば

shared_ptr<int[]> array(new int[10]);

C++17ではstd::make_shared<T>()はまだ配列型をサポートしていないようですが、C++20からはサポートされているため

shared_ptr<int[]> array = make_shared<int[]>(10);  // サイズ10のint型配列

として初期化できるようですが、手元のclang 9.0.1では使用できませんでした。(clang 10からサポート?)

おすすめ