##### cppreference.com

##### Search

Create account

##### Namespaces

- Page
- Discussion

##### Variants

##### Views

- View
- Edit
- History

##### Actions

# std::basic_ostream::operator=

From cppreference.com
< cpp‎ | io‎ | basic ostream

protected: basic_istream& 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.

### [edit] Parameters

rhs | - | the basic_ostream object from which to assign to *this

### [edit] Example

Run this code

    #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

Retrieved from "http://en.cppreference.com/mwiki/index.php?title=cpp/io/basic_ostream/operator%3D&oldid=62737"