Каждая функция форматированного вывода начинает выполнение с создания объекта класса sentry. Если этот объект возвращается true при преобразовании в значение типа bool, функция пытается сгенерировать запрошенный вывод. В случае сбоя генерации выполняется функция форматированного вывода setstate(ios_base::failbit), которая может вызвать исключение. Если во время вывода возникает исключение, то ios::badbit включается320 в *thisсостоянии ошибки. Если (exceptions()&badbit) != 0 тогда исключение генерируется повторно. Независимо от того, выбрасывается ли исключение, sentry объект уничтожается до выхода из функции форматированного вывода. Если исключение не генерируется, результатом функции форматированного вывода будет *this.
Описания отдельных функций форматированного вывода описывают, как они выполняют вывод, и не упоминают sentry объект.
Если функция форматированного вывода потока os определяет заполнение, это делается следующим образом. Для данной charT символьной последовательности, seq где charT - символьный тип потока, если длина seq меньше чем os.width(), тоos.fill() к этой последовательности добавляется достаточное количество копий, необходимое для заполнения до ширины os.width() символов. Если (os.flags() & ios_base::adjustfield) == ios_base::left есть true, символы заполнения помещаются после последовательности символов; в противном случае они помещаются перед последовательностью символов.
не вызывая ios::failure броска.