78 lines · cpp
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-exception6//7//===----------------------------------------------------------------------===//8 9// <fstream>10 11// template <class charT, class traits = char_traits<charT> >12// class basic_fstream13 14// basic_fstream(basic_fstream&& rhs);15 16#include <fstream>17#include <cassert>18 19#include "test_macros.h"20#include "platform_support.h"21#include "operator_hijacker.h"22 23int main(int, char**)24{25 std::string temp = get_temp_file_name();26 {27 std::fstream fso(temp, std::ios_base::in | std::ios_base::out28 | std::ios_base::trunc);29 std::fstream fs = std::move(fso);30 double x = 0;31 fs << 3.25;32 fs.seekg(0);33 fs >> x;34 assert(x == 3.25);35 }36 std::remove(temp.c_str());37 38 {39 std::basic_fstream<char, operator_hijacker_char_traits<char> > fso(40 temp, std::ios_base::in | std::ios_base::out | std::ios_base::trunc);41 std::basic_fstream<char, operator_hijacker_char_traits<char> > fs = std::move(fso);42 std::basic_string<char, operator_hijacker_char_traits<char> > x;43 fs << "3.25";44 fs.seekg(0);45 fs >> x;46 assert(x == "3.25");47 }48 std::remove(temp.c_str());49 50#ifndef TEST_HAS_NO_WIDE_CHARACTERS51 {52 std::wfstream fso(temp, std::ios_base::in | std::ios_base::out53 | std::ios_base::trunc);54 std::wfstream fs = std::move(fso);55 double x = 0;56 fs << 3.25;57 fs.seekg(0);58 fs >> x;59 assert(x == 3.25);60 }61 std::remove(temp.c_str());62 63 {64 std::basic_fstream<wchar_t, operator_hijacker_char_traits<wchar_t> > fso(65 temp, std::ios_base::in | std::ios_base::out | std::ios_base::trunc);66 std::basic_fstream<wchar_t, operator_hijacker_char_traits<wchar_t> > fs = std::move(fso);67 std::basic_string<wchar_t, operator_hijacker_char_traits<wchar_t> > x;68 fs << L"3.25";69 fs.seekg(0);70 fs >> x;71 assert(x == L"3.25");72 }73 std::remove(temp.c_str());74#endif75 76 return 0;77}78