Namespaces
Variants

C++ named requirements: UnformattedOutputFunction

From cppreference.net
C++ named requirements

Requisitos

Una UnformattedOutputFunction es una función de salida de flujo que realiza lo siguiente:

1) Construye un objeto de tipo basic_ostream::sentry con duración de almacenamiento automático, que realiza lo siguiente:
2) Verifica el estado del centinela llamando a sentry::operator bool() , que es equivalente a basic_ios::good .
  • Si el operador retorna false o el constructor del centinela lanza una excepción, no se produce ninguna salida.
  • Si el operador retorna true , intenta realizar la salida deseada insertando los caracteres en el flujo de salida como si se llamara a rdbuf ( ) - > sputc ( ) . También pueden usarse otros miembros públicos de std::basic_ostream , pero los miembros virtuales de rdbuf ( ) excepto overflow() , xsputn() y sync() nunca serán llamados.
  • Si se lanza una excepción durante la salida, establece badbit en el flujo de salida. Si las excepciones en badbit están habilitadas en la máscara de excepciones de este flujo ( ( exceptions ( ) & badbit ) ! = 0 ), la excepción también se relanza.
  • Si no se lanzó ninguna excepción, retorna el valor especificado por la función.
3) En cualquier caso, ya sea terminando por excepción o retornando, el destructor del centinela es llamado antes de salir de esta función.

Biblioteca estándar

Las siguientes funciones de la biblioteca estándar son UnformattedOutputFunction s .

(desde C++11)

Informes de defectos

Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares publicados anteriormente de C++.

DR Aplicado a Comportamiento publicado Comportamiento correcto
LWG 63 C++98 faltaba la política de manejo de excepciones añadida
LWG 160 C++98 el proceso para determinar si la excepción capturada
es relanzada mencionaba una función inexistente exception()
corregido a exceptions()
LWG 165 C++98 el único miembro virtual permitido para ser
llamado en rdbuf ( ) era overflow()
también permitido
xsputn() y sync()