【发布时间】:2013-04-09 17:44:08
【问题描述】:
std::basic_istream 的算术提取运算符有non-virtual overloads for all 8 integer types(不列出字符,无论如何处理方式不同),它调用num_get::get,它有单独的virtual overloads for 6 of them(缺少short 和int 的签名版本)
std::basic_ostream 的算术插入运算符也有non-virtual overloads for all 8 integer types,它调用num_put::put,它只有virtual overloads for 4 types,即long、long long 及其无符号变体。对于较小的类型,插入运算符执行整数提升。
为什么在用户可扩展性方面存在差距?似乎不可能为每个整数类型提供用户定义的处理(例如,在 iostream 接口之上构建一个类型保留的序列化库),而且它是不对称的。不费吹灰之力就可以实现。有取舍吗?
【问题讨论】: