std::basic_ostream<CharT,Traits>:: operator=
From cppreference.net
<
cpp
|
io
|
basic ostream
|
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 |