Как std::iostream узнаёт, когда надо делать flush() (не указывая это вручную манипуляторами или явным вызовом)?
Судя по документации, деструктор класса, а также деструктор базового std::ostream класса этого не делают. Единственное, что удалось найти, это явный вызов std::cout.flush() при завершении программы либо при чтении/записи из/в std::cin, std::cerr, которые связаны (tied) с std::cout. Распространяются ли эти случаи на произвольный std::iostream?
flush() вызывается endl - ом, (поэтому, кстати, endl тормозит программу), также при окончании программы (или потока) делается flush. Пишу ответом потому, что репутации не хватает на комменты
Продвижение своими сайтами как стратегия роста и независимости