在我的程序中,我想使用显示错误消息的断言。除了众所周知的 C 和 C++ 解决方法之外,还有 BOOST 提供的“真正”解决方案BOOST_ASSERT_MSG( expr, msg )
(另请参见带有 message 的 assert())
但是静态消息对我来说还不够,我有时还想显示失败的变量,例如在类似的情况下
BOOST_ASSERT_MSG( length >= 0, "No positive length found! It is " << length )
如您所见,我想将消息“字符串”格式化为stringstream
or ostream
,这样我就可以轻松地显示自定义类型(假设我已经定义了相关的格式化函数)。
这里的问题是BOOST_ASSERT_MSG
默认情况下需要 achar const *
所以不兼容。
assertion_failed_msg()
有没有办法以使用流作为消息的方式重新定义/重载?如何?
(我的天真的方法失败了,因为编译器首先想对operator<<("foo",bar)
消息本身做一个......)