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) был constbasic_ostream&&
1. добавлен const
2. удалён const

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

Spec-Zone.ru

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