1//===----------------------------------------------------------------------===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8
9// <fstream>
10
11// template <class charT, class traits = char_traits<charT> >
12// class basic_filebuf
13
14// basic_filebuf& operator=(basic_filebuf&& rhs);
15
16#include <fstream>
17#include <cassert>
18#include "test_macros.h"
19#include "platform_support.h"
20
21int main(int, char**)
22{
23 std::string temp = get_temp_file_name();
24 {
25 std::filebuf f;
26 assert(f.open(temp.c_str(), std::ios_base::out | std::ios_base::in
27 | std::ios_base::trunc) != 0);
28 assert(f.is_open());
29 assert(f.sputn("123", 3) == 3);
30 f.pubseekoff(off: 1, way: std::ios_base::beg);
31 assert(f.sgetc() == '2');
32 std::filebuf f2;
33 f2 = std::move(f);
34 assert(!f.is_open());
35 assert(f2.is_open());
36 assert(f2.sgetc() == '2');
37 }
38 std::remove(filename: temp.c_str());
39
40#ifndef TEST_HAS_NO_WIDE_CHARACTERS
41 {
42 std::wfilebuf f;
43 assert(f.open(temp.c_str(), std::ios_base::out | std::ios_base::in
44 | std::ios_base::trunc) != 0);
45 assert(f.is_open());
46 assert(f.sputn(L"123", 3) == 3);
47 f.pubseekoff(off: 1, way: std::ios_base::beg);
48 assert(f.sgetc() == L'2');
49 std::wfilebuf f2;
50 f2 = std::move(f);
51 assert(!f.is_open());
52 assert(f2.is_open());
53 assert(f2.sgetc() == L'2');
54 }
55 std::remove(filename: temp.c_str());
56#endif
57
58 return 0;
59}
60

source code of libcxx/test/std/input.output/file.streams/fstreams/filebuf.assign/move_assign.pass.cpp