protected: basic_ostream& operator=( const basic_ostream& rhs ) = delete; | (1) | |
protected: basic_ostream& operator=( basic_ostream&& rhs ); | (2) | (since C++11) |
1) The copy assignment operator is protected, and is deleted. Output streams are not CopyAssignable.
2) The move assignment operator exchanges all data members of the base class, except for rdbuf()
, with rhs
, as if by calling swap(*rhs)
. This move assignment operator is protected: it is only called by the move assignment operators of the derived movable output stream classes std::basic_ofstream
and std::basic_ostringstream
, which know how to correctly move-assign the associated streambuffers.
rhs | - | the basic_ostream object from which to assign to *this |
#include <sstream> #include <utility> #include <iostream> 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'; }
Output:
42
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
http://en.cppreference.com/w/cpp/io/basic_ostream/operator=