- syncstream[meta header]
- function[meta id-type]
- std[meta namespace]
- basic_syncbuf[meta class]
- cpp20[meta cpp]
basic_syncbuf& operator=(basic_syncbuf&& rhs) noexcept;ムーブ代入を行う。このとき、保留中の出力はラップされたストリームへ転送される。
保留中の出力を転送するためにemit()を呼び出した後、rhsから*thisへムーブ代入を行う。
*this
rhs.get_wrapped() == nullptrはtrueである。allocator_traits<Allocator>::propagate_on_container_move_assignment::valueがtrueのとき、this->get_allocator() == rhs.get_allocator()はtrueである。- そうではなく、
allocator_traits<Allocator>::propagate_on_container_move_assignment::valueがfalseのときは、 アロケータは変更されない。
投げない。
この代入演算子は、rhsをそのラップされたストリームバッファから切り離し、rhsを破棄しても出力が生成されないようにする。
#include <iostream>
#include <syncstream>
#include <utility>
int main()
{
std::osyncstream aout{std::cout};
aout << "Hello, ";
std::osyncstream bout = std::move(aout); // 通常 std::basic_osyncstream から呼ばれる。
// また、ここで "Hello, " が転送される。
bout << "World!";
}Hello, World!
- C++20
- Clang: 9.0.0 現在未対応
- GCC: 10.0.0 現在未対応
- ICC: ??
- Visual C++: ??