Spec-Zone.ru › C++

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

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

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/io/basic_ostream/operator%3D

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API