move_assign.pass.cpp revision 13aaf422e49fa4b66642966bfc6078b5d9adde12
1//===----------------------------------------------------------------------===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is dual licensed under the MIT and the University of Illinois Open 6// Source Licenses. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9 10// <fstream> 11 12// template <class charT, class traits = char_traits<charT> > 13// class basic_fstream 14 15// basic_fstream& operator=(basic_fstream&& rhs); 16 17#include <fstream> 18#include <cassert> 19 20int main() 21{ 22#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES 23 char temp[L_tmpnam]; 24 { 25 std::fstream fso(temp, std::ios_base::in | std::ios_base::out 26 | std::ios_base::trunc); 27 std::fstream fs; 28 fs = move(fso); 29 double x = 0; 30 fs << 3.25; 31 fs.seekg(0); 32 fs >> x; 33 assert(x == 3.25); 34 } 35 std::remove(temp); 36 { 37 std::wfstream fso(temp, std::ios_base::in | std::ios_base::out 38 | std::ios_base::trunc); 39 std::wfstream fs; 40 fs = move(fso); 41 double x = 0; 42 fs << 3.25; 43 fs.seekg(0); 44 fs >> x; 45 assert(x == 3.25); 46 } 47 std::remove(temp); 48#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES 49} 50