Espacios de nombres
Variantes
Acciones

Requisitos denominados de C++: UnformattedOutputFunction

De cppreference.com
< cpp‎ | named req
 
 
Requisitos denominados de C++
Números aleatorios
Concurrencia
(C++11)
(C++11)
Rangos
Vista multidimensional
Otros

 

[editar] 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ática, que realiza lo siguiente:
  • Si eofbit o badbit están configurados en el flujo de salida, también configura failbit y, si las excepciones en failbit están habilitadas en la máscara de excepciones de este flujo de salida ((exceptions() & failbit) != 0), lanza ios_base::failure.
  • Vacía el flujo de salida ligado por tie(), si corresponde.
2) Verifica el estado del centinela llamando a sentry::operator bool(), que es equivalente a basic_ios::good.
  • Si el operador devuelve false o el constructor del centinela lanza una excepción, no se produce ninguna salida.
  • Si el operador devuelve true, intenta realizar la salida deseada insertando los caracteres en el flujo de salida como si llamara a rdbuf()->sputc(). También se pueden usar otros miembros públicos de std::basic_ostream, pero nunca se llamarán a los miembros virtuales de rdbuf() excepto overflow(), xsputn() y sync().
  • 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 vuelve a lanzar.
  • Si no se lanzó ninguna excepción, devuelve el valor especificado por la función.
3) En cualquier caso, ya sea que se termine por excepción o por retorno, se llama al destructor del centinela antes de salir de esta función.

[editar] Biblioteca estándar

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

(desde C++11)

[editar] Informes de defectos

Los siguientes informes de defectos de cambio de comportamiento se aplicaron de manera retroactiva a los estándares de C++ publicados anteriormente.

IDAplicado aComportamiento según lo publicadoComportamiento correcto
LWG 63C++98Faltaba la política de manejo de excepciones.Se agregó.
LWG 160C++98El proceso de determinar si la excepción capturada
se vuelve a generar mencionó una función inexistente exception().
Se corrigió a exceptions().
LWG 165C++98El único miembro virtual que se podía llamar en rdbuf() era overflow().También se permitía
xsputn() y sync().