Spec-Zone.ru › C++

C++ требования к именованным элементам: UnformattedOutputFunction

Требования

UnformattedOutputFunction — это функция потокового вывода, которая выполняет следующее:

1) Создает объект типа basic_ostream::sentry со статическим временем жизни, который выполняет следующее:
  • Если eofbit или badbit установлены в выходном потоке, устанавливает также failbit, и если исключения при failbit включены в маске исключений выходного потока (маска исключений) ((exceptions() & failbit) != 0), выбрасывает ios_base::failure.
  • Выполняет сброс привязанного выходного потока, если применимо.
2) Проверяет состояние стражи, вызывая sentry::operator bool(), что эквивалентно basic_ios::good.
  • Если оператор возвращает false или конструктор стражи выбрасывает исключение, вывод не выполняется.
  • Если оператор возвращает true, пытается выполнить требуемый вывод, вставляя символы в выходной поток так, как если бы вызывалась rdbuf()->sputc(). Другие публичные члены std::basic_ostream также могут быть использованы, но виртуальные члены rdbuf() за исключением overflow(), xsputn() и sync() никогда не будут вызваны.
    • Если при выводе возникает исключение, устанавливается badbit в выходном потоке. Если исключения при badbit включены в маске исключений этого потока (маска исключений) ((exceptions() & badbit) != 0), исключение также перебрасывается.
    • Если исключение не было выброшено, возвращается значение, указанное функцией.
3) В любом случае, независимо от того, прерывается ли выполнение исключением или возвратом, деструктор стражи вызывается перед завершением этой функции.

Стандартная библиотека

Следующие функции стандартной библиотеки являются UnformattedOutputFunctions.

  • basic_ostream::operator<<(basic_streambuf*)
  • basic_ostream::put
  • basic_ostream::write
  • basic_ostream::flush
  • basic_ostream::tellp (кроме вызовов pubseekoff вместо вывода)
  • basic_ostream::seekp (кроме вызовов pubseekoff или pubseekpos вместо вывода)
(с C++11)

Отчеты об ошибках

Следующие отчеты об ошибках, изменяющие поведение, были применены ретроактивно к ранее опубликованным стандартам C++.

DR Применено к Поведение, как опубликовано Корректное поведение
LWG 63 C++98 Политика обработки исключений отсутствовала добавлена
LWG 160 C++98 Процесс определения, было ли пойманное исключение переброшено, упоминал несуществующую функцию exception() исправлено на exceptions()
LWG 165 C++98 Единственный разрешенный виртуальный член, который можно было вызывать для rdbuf() был overflow() также разрешены
xsputn() и sync()

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/named_req/UnformattedOutputFunction

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API