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) | (seit C++11) |
1)
Der Kopierzuweisungsoperator ist geschützt und als gelöscht deklariert. Ausgabeströme sind nicht
CopyAssignable
.
2)
Der Move-Zuweisungsoperator tauscht alle Datenmember der Basisklasse, außer
rdbuf()
, mit
rhs
aus, als ob durch Aufruf von
swap
(
*
rhs
)
. Dieser Move-Zuweisungsoperator ist geschützt: Er wird nur von den Move-Zuweisungsoperatoren der abgeleiteten beweglichen Ausgabestromklassen
std::basic_ofstream
und
std::basic_ostringstream
aufgerufen, die wissen, wie die zugehörigen Streampuffer korrekt move-zuzuweisen sind.
Parameter
| rhs | - |
das
basic_ostream
Objekt, von dem zugewiesen werden soll an
*
this
|
Beispiel
Diesen Code ausführen
#include <iostream> #include <sstream> #include <utility> int main() { std::ostringstream s; // std::cout = s; // ERROR: copy assignment operator is deleted // std::cout = std::move(s); // ERROR: move assignment operator is protected s = std::move(std::ostringstream() << 42); // OK, moved through derived std::cout << s.str() << '\n'; }
Ausgabe:
42
Fehlerberichte
Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.
| DR | Angewendet auf | Verhalten wie veröffentlicht | Korrigiertes Verhalten |
|---|---|---|---|
| LWG 2067 | C++11 |
1. der Parametertyp der Überladung
(1)
war
basic_ostream&
2. der Parametertyp der Überladung (2) war const basic_ostream && |
1.
const
hinzugefügt
2. const entfernt |