std::basic_ostream<CharT,Traits>:: operator=
From cppreference.net
<
cpp
|
io
|
basic ostream
|
protected
:
basic_ostream & operator = ( const basic_ostream & rhs ) = delete ; |
(1) | |
|
protected
:
basic_ostream & operator = ( basic_ostream && rhs ) ; |
(2) | (depuis C++11) |
1)
L'opérateur d'affectation par copie est protégé et supprimé. Les flux de sortie ne sont pas
CopyAssignable
.
2)
L'opérateur d'affectation par déplacement échange tous les membres de données de la classe de base, à l'exception de
rdbuf()
, avec
rhs
, comme en appelant
swap
(
*
rhs
)
. Cet opérateur d'affectation par déplacement est protégé : il est uniquement appelé par les opérateurs d'affectation par déplacement des classes de flux de sortie dérivées déplaçables
std::basic_ofstream
et
std::basic_ostringstream
, qui savent comment correctement affecter par déplacement les streambuffers associés.
Paramètres
| rhs | - |
l'objet
basic_ostream
à partir duquel assigner à
*
this
|
Exemple
Exécuter ce code
#include <iostream> #include <sstream> #include <utility> int main() { std::ostringstream s; // std::cout = s; // ERREUR : opérateur d'affectation par copie supprimé // std::cout = std::move(s); // ERREUR : opérateur d'affectation par déplacement protégé s = std::move(std::ostringstream() << 42); // OK, déplacement via la classe dérivée std::cout << s.str() << '\n'; }
Sortie :
42
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 2067 | C++11 |
1. le type de paramètre de la surcharge
(1)
était
basic_ostream&
2. le type de paramètre de la surcharge (2) était const basic_ostream && |
1. ajout de
const
2. suppression de const |