Requisitos denominados de C++: FormattedOutputFunction
Requisitos
Una FormattedOutputFunction es una función de flujo de salida que realiza lo siguiente:
- Construye un objeto de tipo basic_ostream::sentry con duración automática de almacenamiento, lo que realiza lo siguiente:
- Si eofbit o badbit se activan en el flujo de salida, también se activa el
failbit, y si se habilitan excepciones enfailbitpara la exception mask de este flujo de entrada ((exceptions() & failbit) != 0), lanza ios_base::failure. - Vacía el flujo de salida atado, si aplica.
- Si eofbit o badbit se activan en el flujo de salida, también se activa el
- Valida el estado del centinela por medio del llamado a
sentry::operator bool(), lo que equivale a basic_ios::good. - Si el centinela devolvió
false, o el constructor del centinela lanzó una excepción, no se genera ninguna salida. - Si el centinela devolvió
true, intenta crear la salida deseada insertando los caracteres en el flujo de salida, como si fuera un llamado ardbuf()->sputc(). Otros miembros públicos de std::basic_ostream también pueden ser usados, pero nunca serán llamados los miembros virtuales derdbuf(), a excepción de overflow(), xsputn() y sync().
- Si la salida no se pudo generar, activa
failbit. Si se habilitan excepciones enfailbitpara la exception mask de este flujo ((exceptions() & failbit) != 0), lanza ios_base::failure. - Si se lanza una excepción en la salida, se activa
badbiten el flujo de salida. Si se habilitan excepciones enbadbitpara la exception mask ((exceptions() & badbit) != 0) de este flujo, la excepción es relanzada. - Si no se lanza ninguna excepción, devuelve
*this.
- Si la salida no se pudo generar, activa
- En cualquier caso, ya sea terminando por excepción o devolviendo un valor, el destructor del centinela es llamado antes de salir de esta función.
Relleno
|
Las funciones de salida formateada determinan el relleno de acuerdo a std::num_put::do_put() etapa 3. |
(hasta C++14) |
|
Si una función de salida formateada de un flujo Dada una secuencia Si |
(desde C++14) |
Biblioteca estándar
Las siguientes son funciones de la biblioteca estándar que corresponden a funciones FormattedOutputFunction.
- basic_ostream::operator<<(std::basic_ostream&, int / long / double / void* / bool)
- operator<<(std::basic_ostream&, char)
- operator<<(std::basic_ostream&, char*)
- operator<<(std::basic_ostream&, const std::bitset&)
- operator<<(std::basic_ostream&, const std::basic_string&)
operator<<, cuando se llama sobre el valor devuelto de std::put_money
| (desde C++17) |
|
(desde C++23) |
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.
| ID | Aplicado a | Comportamiento según lo publicado | Comportamiento correcto |
|---|---|---|---|
| LWG 160 | C++98 | El proceso de determinar si la excepción atrapada es relanzada o no, hacía mención a una función exception() no existente
|
Corregido a exceptions() |
| LWG 165 | C++98 | El único miembro virtual al que se le permite ser llamado por rdbuf() era overflow()
|
También se les permite axsputn() y sync()
|