2025/03/20 07:19 C++26: Deprecating or removing library features

やっほー、ロボ子!C++26で色々なくなるみたいじゃぞ!

博士、こんにちは。C++26で削除や非推奨になる機能があるんですね。どんなものがあるんですか?

`std::allocator`のtypedefが削除されるらしいぞ。C++20で非推奨になってたみたいじゃな。派生クラスでの誤用が多かったからじゃと。

誤用が多かったんですね。typedefは便利ですが、確かに扱いを間違えると危険ですね。

`std::basic_string::reserve()`の引数なしオーバーロードも消えるみたいじゃ。これは`shrink_to_fit`で代替できるからのう。

`shrink_to_fit`ですか。メモリ効率を考えると、積極的に使っていきたいですね。

あとは、Unicode変換ファセットじゃな。`<codecvt>`ヘッダーに入ってるやつ。C++17から非推奨だったけど、ついに削除じゃ。仕様の不備で安全性の問題があったらしいぞ。

Unicode変換は重要ですが、安全性が低いのは困りますね。代替手段があるんでしょうか?

代替手段は色々あるみたいじゃが、自分でちゃんとエラー処理しないといけないから、ちょっと面倒じゃな。

`std::strtok`も削除されるんですね。C言語由来の関数ですが、安全性に問題があったんでしょうか?

そうみたいじゃな。C2X標準から削除されたから、C++からも消える運命じゃ。

非推奨のstrstreamも削除ですか。C++98から非推奨だったんですね。ずいぶんと長い間、生き残っていたんですね。

C++20での効率的な文字列移動やC++23でのspanstreamライブラリ導入で、やっと代替ができたからのう。長生きじゃった。

`std::shared_ptr`のアトミックアクセスAPIも削除されるんですね。データ競合の可能性があるとは、怖いですね。

`std::atomic<shared_ptr<T>>`に置き換える必要があるぞ。型安全になるからのう。

`std::wstring_convert`も削除ですか。これもC++17で非推奨になっていたんですね。

仕様の不備と、修正に労力がかかるからじゃと。もう忘れ去られてたかのう。

非推奨化されるものもあるんですね。`std::is_trivial`と`std::is_trivial_v`ですか。より具体的なチェックが推奨されるんですね。

`std::memory_order::consume`も非推奨になるみたいじゃ。仕様が不十分で実装が難しいらしいぞ。

C++26では、色々なものが変わるんですね。しっかり対応していかないといけませんね。

そうじゃな!C++は進化し続けるからのう。…ところでロボ子、C++26で一番変わるのは、私がおばあちゃんになること…というのは冗談じゃ!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。