ホームページ > バックエンド開発 > C++ > なぜ `std::shared_ptr` には配列型の特殊化がないのでしょうか?

なぜ `std::shared_ptr` には配列型の特殊化がないのでしょうか?

Linda Hamilton
リリース: 2024-11-10 02:47:02
オリジナル
404 人が閲覧しました

Why Doesn't `std::shared_ptr` Have a Specialization for Array Types?

std::shared_ptr の特殊化: 謎

C 標準ライブラリには、std 用の特殊なテンプレートが含まれています。 :unique_ptr は、デストラクターで delete[] を適切に呼び出します。ただし、std::shared_ptr には同様の特殊化が存在しないため、配列の割り当てを正しく解除するにはカスタム デリーターを使用する必要があります。

特殊化がない理由

初期、std::shared_ptr の省略。専門化は単なる見落としであるように見えました。しかし、そのような機能の追加については図書館作業部会 (LWG) 内で合意が得られていないことが判明しました。主な懸念は、shared_ptr に算術演算を含めるという提案から生じたもので、この機能は破棄される可能性がありました。

最終的には、std::shared_ptr専門化が C 標準から除外されたことが決定的であることが判明しました。最近 LWG メンバー間で議論が再開されましたが、正式な提案はまだ実現していません。

現在のステータス

特殊なテンプレートがないにもかかわらず、C 17 は部分的な配列サポートを導入しました。 shared_ptr::shared_ptr() メソッドの 3 番目のケースで指定されている、shared_ptr の場合。このアップデートにより、専用の特殊化の利便性はありませんが、shared_ptr を使用した配列の作成と破棄が可能になります。

将来の展望

ドラフト TS (技術仕様) N4077は、shared_ptr での配列サポートへの潜在的な道筋を概説し、この機能は最終的に C 17 に組み込まれました。 of C は、この領域にさらなる機能強化をもたらし、共有ポインタを使用した配列管理の柔軟性と表現力をさらに高める可能性があります。

以上がなぜ `std::shared_ptr` には配列型の特殊化がないのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート