ホームページ  >  記事  >  バックエンド開発  >  C には std::shared_ptr の特殊化がないのはなぜですか?

C には std::shared_ptr の特殊化がないのはなぜですか?

DDD
DDDオリジナル
2024-11-10 06:48:03965ブラウズ

Why Isn't There a std::shared_ptr Specialization in C  ?

std::shared_ptr特殊化

C 標準ライブラリには、配列に対する std::unique_ptr の特殊化が含まれており、デストラクターから delete[] を正しく呼び出します。ただし、std::shared_ptr には同様の特殊化が特にありません。この動作では、ユーザーは明示的に delete[] を呼び出すデリーターを手動で提供する必要があります。

この省略は見落としですか?それとも意図的なものですか?

欠席の理由

C ライブラリ ワーキング グループ (LWG) は、std::shared_ptr の可能性を検討しました。

具体的には、std::shared_ptr の算術演算です。提案されたが反対に遭った。最終的に、公式の提案と優先順位付けの欠如により、この機能は標準から除外されました。

最近の開発

非公式には、このトピックは再び業界内で注目を集めています。 LWG に準拠し、プロトタイプが開発されました。この機能が価値あるツールになる可能性はありますが、標準に組み込まれるかどうかは依然として不確実です。

現在のステータス

C 11 の時点では、std::共有_ptr専門性が標準化されていない。ただし、std::shared_ptr の配列サポートを導入する進行中のドラフト TS 提案 (N4077) があります。

アップデート (2017)

C 17 標準にはサポートが含まれていますstd::shared_ptr の配列の場合 (ケース 3 shared_ptr::shared_ptr()).

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。