在tee.hpp中提升断言'result1 ==n && result2 == n'
boost assertion 'result1 ==n && result2 == n' in tee.hpp
我是使用boost的新手运行程序时,断言result1 == n && result2 == n
失败
源文件地址。
问题是什么?我该如何解决问题谢谢
这意味着写入tee
流的其中一个分支失败:
std::streamsize write(const char_type* s, std::streamsize n)
{
BOOST_STATIC_ASSERT((
is_convertible<
BOOST_DEDUCED_TYPENAME iostreams::category_of<Device>::type, output
>::value
));
std::streamsize result1 = iostreams::write(dev_, s, n);
std::streamsize result2 = iostreams::write(sink_, s, n);
(void) result1; // Suppress 'unused variable' warning.
(void) result2;
assert(result1 == n && result2 == n);
return n;
}
您可以看到,如果两次写入都按预期工作,则result1
和result2
都应该匹配n
。
如果您使用的流实现专门记录了另一个后置条件,则它与 Boost Iostreams 不兼容,您必须将其包装在"执行所需操作"的流类中,以使其满足本assert
中表达的期望。
当然,它可以像"ENOENT"(磁盘已满)发生一样简单,或者网络流失败(例如,由于对等断开)