最終更新日時(UTC):
が更新

履歴 編集

function
<syncstream>

std::basic_syncbuf::operator=(C++20)

basic_syncbuf& operator=(basic_syncbuf&& rhs) noexcept;

概要

ムーブ代入を行う。このとき、保留中の出力はラップされたストリームへ転送される。

効果

保留中の出力を転送するためにemit()を呼び出した後、rhsから*thisへムーブ代入を行う。

戻り値

*this

事後条件

  • rhs.get_wrapped() == nullptrtrueである。
  • allocator_traits<Allocator>::propagate_on_container_move_assignment::valuetrueのとき、 this->get_allocator() == rhs.get_allocator()trueである。
  • そうではなく、allocator_traits<Allocator>::propagate_on_container_move_assignment::valuefalseのときは、 アロケータは変更されない。

例外

投げない。

備考

この代入演算子は、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

処理系

参照