【发布时间】:2017-01-09 18:04:29
【问题描述】:
根据这个问题的答案Is overloading on all of the fundamental integer types is sufficient to capture all integers?所有基本类型的重载可能无法处理int8_tint64_t等类型。另一方面,根据文档std::ostream formatted output和std::istream formatted input完全由重载所有基本类型。那么在int8_t 和其他人无法通过这种重载处理的平台上,C++ 流将如何处理它们?会不会编译失败?标准库实现者是否必须提供其他未记录的方法?还有什么?
【问题讨论】:
-
我不明白你的问题。如果
int8_t在某个平台上不可用,std::ostream和家人不可能重载它们。在那个平台上,int8_t不存在,因此不是一个类型。 -
如有必要,
int8_t始终可以提升为基本类型。如果您的平台有 32 位long long,则可能有问题的是int64_t。 -
@Rakete1111 read question in link,问题不是
int8_没有定义,而是它不是基本类型的别名。 -
@Useless 我怀疑提升是否能很好地处理重载。但即使是这样,它对
std::istream的引用也无济于事 -
@Useless 你无法获得 32 位
long long。最低要求是 64 位。
标签: c++ c++11 language-lawyer