table of contents
std::basic_ostream::operator=(3) | C++ Standard Libary | std::basic_ostream::operator=(3) |
NAME¶
std::basic_ostream::operator= - std::basic_ostream::operator=
Synopsis¶
protected: (1)
basic_ostream& operator=( const basic_ostream& rhs ) = delete;
protected: (2) (since C++11)
basic_ostream& operator=( basic_ostream&& rhs );
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.
Parameters¶
rhs - the basic_ostream object from which to assign to *this
Example¶
// Run this code
#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';
}
Output:¶
42
Defect reports
The following behavior-changing defect reports were applied retroactively to
previously published C++ standards.
DR Applied to Behavior as published Correct behavior
1. the parameter type of overload (1) was
LWG 2067 C++11 basic_ostream& 1. added const
2. the parameter type of overload (2) was const 2. removed const
basic_ostream&&
2024.06.10 | http://cppreference.com |