Namespaces
Variants

std::basic_ostream<CharT,Traits>:: operator=

From cppreference.net
protected :
basic_ostream & operator = ( const basic_ostream & rhs ) = delete ;
(1)
protected :
basic_ostream & operator = ( basic_ostream && rhs ) ;
(2) (начиная с C++11)
1) Оператор копирующего присваивания защищён и удалён. Потоки вывода не являются CopyAssignable .
2) Оператор перемещающего присваивания обменивает все члены данных базового класса, за исключением rdbuf() , с rhs , как если бы вызывался swap ( * rhs ) . Этот оператор перемещающего присваивания является защищённым: он вызывается только операторами перемещающего присваивания производных классов перемещаемых выходных потоков std::basic_ofstream и std::basic_ostringstream , которые знают, как правильно выполнить перемещающее присваивание связанных буферов потоков.

Параметры

rhs - объект basic_ostream из которого производится присваивание в * this

Пример

#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';
}

Вывод:

42

Отчеты о дефектах

Следующие отчеты об изменениях в поведении, содержащие описания дефектов, были применены ретроактивно к ранее опубликованным стандартам C++.

DR Применяется к Поведение в опубликованной версии Корректное поведение
LWG 2067 C++11 1. тип параметра перегрузки (1) был basic_ostream&
2. тип параметра перегрузки (2) был const basic_ostream &&
1. добавлен const
2. удален const