[英]Reading bitset<0> from istream always a failure?
我最近在使用std::bitset<0>
并注意到operator>>
一些有趣的事情:
《规范》指出:
如果没有提取字符,则调用 is.setstate(ios_base::failbit)。
当“所有可能的 N 个字符”(N == 0)已被读取时,这是否仍然适用? 如果是这样,这是否意味着尝试从istream
读取到bitset<0>
必须始终设置failbit
?
以下单元测试在我手头的编译器中没有表现出一致的行为:
BOOST_AUTO_TEST_CASE(io0) {
try {
std::stringstream ss{"1"};
ss.exceptions(std::ios::badbit | std::ios::failbit);
std::bitset<0> b;
ss >> b;
BOOST_TEST(false);
} catch(...) {
BOOST_TEST(true);
}
}
MSVC 2019 设置了故障位,而 GCC 7.3.0 没有!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.