の算術抽出演算子にstd::basic_istream
は、8 つの整数型すべてに対する非仮想オーバーロードがあり(とにかく処理が異なる char はリストされていません)、そのうちの 6 つに対してnum_get::get
個別の仮想オーバーロードを持つ を呼び出します(short と int の符号付きバージョンがありません) 。
の算術挿入演算子には、8 つの整数型すべてに対する非仮想オーバーロードstd::basic_ostream
もあり、 を呼び出します。これには、とその符号なしバリアントである4 つの型に対する仮想オーバーロードのみがあります。小さい型の場合、挿入演算子は整数昇格を実行します。num_put::put
long
long long
ユーザーの拡張性を実現するためのツール・デ・フォースにギャップがあるのはなぜでしょうか? 整数型ごとにユーザー定義の処理を提供すること (たとえば、iostream インターフェイスの上に型を保持するシリアル化ライブラリを構築すること) を提供することは不可能に思えます。さらに、非対称です。わずかな労力で達成できた可能性があります。トレードオフはありますか?