basic_ostream
我有一个函数被编码为在调用全局对象的析构函数时将文本输出到标准输出。我已经在流上注册了这个函数,但由于某种原因它没有做任何事情:
void callback(std::ios_base::event evt, std::ios_base& str, int index)
{
if (evt == std::ios_base::erase_event)
{
std::cout << "Erase event";
}
}
int main()
{
std::cout.register_callback(callback, index());
}
没有错误/警告,除非我向析构函数添加显式调用,否则它不会输出任何内容:
std::cout.~basic_ostream<char>(); // "Erase event"
我意识到这样做是错误的,所以我不会将其视为一种解决方法。我什至尝试从缓冲区刷新输出,但无济于事。为什么会这样?我在 GCC 4.8 上运行我的代码。这是一个演示。