Namespaces
Variants

C++ named requirements: UnformattedOutputFunction

From cppreference.net
C++ named requirements

Exigences

Une UnformattedOutputFunction est une fonction de sortie de flux qui effectue les opérations suivantes :

1) Construit un objet de type basic_ostream::sentry avec une durée de stockage automatique, qui effectue les opérations suivantes :
  • Si eofbit ou badbit sont activés sur le flux de sortie, active également le failbit et si les exceptions sur failbit sont activées dans le masque d'exceptions de ce flux de sortie exception mask ( ( exceptions ( ) & failbit ) ! = 0 ), lance ios_base::failure .
  • Vide le flux de sortie associé via tie(), le cas échéant.
2) Vérifie l'état de la sentinelle en appelant sentry::operator bool() , ce qui équivaut à basic_ios::good .
  • Si l'opérateur retourne false ou si le constructeur de la sentinelle lève une exception, aucune sortie n'a lieu.
  • Si l'opérateur retourne true , tente d'effectuer la sortie souhaitée en insérant les caractères dans le flux de sortie comme en appelant rdbuf ( ) - > sputc ( ) . D'autres membres publics de std::basic_ostream peuvent également être utilisés, mais les membres virtuels de rdbuf ( ) excepté overflow() , xsputn() et sync() ne seront jamais appelés.
  • Si une exception est levée pendant la sortie, positionne badbit dans le flux de sortie. Si les exceptions sur badbit sont activées dans le masque d'exceptions de ce flux ( ( exceptions ( ) & badbit ) ! = 0 ), l'exception est également relancée.
  • Si aucune exception n'a été levée, retourne la valeur spécifiée par la fonction.
3) Dans tous les cas, que la terminaison se fasse par exception ou par retour, le destructeur du sentinelle est appelé avant de quitter cette fonction.

Bibliothèque standard

Les fonctions standards de bibliothèque suivantes sont des UnformattedOutputFunction s .

(depuis C++11)

Rapports de défauts

Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.

DR Appliqué à Comportement publié Comportement corrigé
LWG 63 C++98 la politique de gestion des exceptions était manquante ajoutée
LWG 160 C++98 le processus de détermination si l'exception attrapée
est relancée mentionnait une fonction inexistante exception()
corrigé en exceptions()
LWG 165 C++98 la seule fonction membre virtuelle autorisée à être
appelée sur rdbuf ( ) était overflow()
également autorisé
xsputn() et sync()