Namespaces
Variants

std::basic_ostream<CharT,Traits>:: basic_ostream

From cppreference.net
explicit basic_ostream ( std:: basic_streambuf < CharT, Traits > * sb ) ;
(1)
protected :
basic_ostream ( const basic_ostream & rhs ) = delete ;
(2) (depuis C++11)
protected :
basic_ostream ( basic_ostream && rhs ) ;
(3) (depuis C++11)
1) Construit l'objet basic_ostream , en attribuant des valeurs initiales à la classe de base en appelant basic_ios::init(sb) .
2) Le constructeur de copie est protégé et est supprimé. Les flux de sortie ne sont pas copiables.
3) Le constructeur de déplacement utilise basic_ios < CharT, Traits > :: move ( rhs ) pour déplacer tous les membres basic_ios , à l'exception de rdbuf() , de rhs vers * this . Ce constructeur de déplacement est protégé : il est appelé par les constructeurs de déplacement des classes de flux de sortie déplaçables std::basic_ofstream et std::basic_ostringstream , qui savent comment déplacer correctement le tampon de flux associé.

Paramètres

sb - tampon de flux à utiliser comme séquence de sortie
rhs - basic_ostream à partir duquel initialiser

Notes

Parce que basic_ios::init(sb) positionne le badbit lorsque sb est un pointeur nul, et parce que basic_ostream::sentry ne fait rien si le flux est déjà dans un état d'erreur, écrire dans un flux construit à partir d'un pointeur nul sb est une opération sans effet.

Exemple

#include <iostream>
#include <sstream>
#include <utility>
int main()
{
    // ERREUR : le constructeur de copie est supprimé
//  std::ostream myout(std::cout);
    // OK : partage le tampon avec cout
    std::ostream myout(std::cout.rdbuf());
    // ERREUR : le constructeur de déplacement est protégé
//  std::ostream s2(std::move(std::ostringstream() << 7.1));
    // OK : constructeur de déplacement appelé via la classe dérivée
    std::ostringstream s2(std::ostringstream() << 7.1);
    myout << s2.str() << '\n';
    std::ostream dev_null{nullptr}; // voir Notes ci-dessus
    dev_null << "no-op";
}

Sortie :

7.1