• Class / Function / Type

      std::
    • Header file

      <>
    • Other / All

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

    履歴 編集

    function
    <syncstream>

    std::basic_syncbuf::operator=

    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

    処理系

    参照