move.pass.cpp revision 256813f4e7915d64776a4edd5f4765d893b9f062
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//===----------------------------------------------------------------------===// 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// The LLVM Compiler Infrastructure 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 5c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// This file is distributed under the University of Illinois Open Source 6c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// License. See LICENSE.TXT for details. 7c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)//===----------------------------------------------------------------------===// 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// <istream> 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// template <class charT, class traits = char_traits<charT> > 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// class basic_iostream; 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// basic_iostream(basic_iostream&& rhs); 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <istream> 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <cassert> 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef _LIBCPP_MOVE 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)template <class CharT> 235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)struct testbuf 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : public std::basic_streambuf<CharT> 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 26c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) testbuf() {} 27c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}; 281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccitemplate <class CharT> 301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistruct test_iostream 311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci : public std::basic_iostream<CharT> 321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci{ 33c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) typedef std::basic_iostream<CharT> base; 34c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) test_iostream(testbuf<CharT>* sb) : base(sb) {} 35c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 36c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) test_iostream(test_iostream&& s) 37c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) : base(std::move(s)) {} 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif // _LIBCPP_MOVE 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)int main() 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef _LIBCPP_MOVE 45c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) { 46c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) testbuf<char> sb; 471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci test_iostream<char> is1(&sb); 481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci test_iostream<char> is(std::move(is1)); 491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci assert(is1.rdbuf() == &sb); 501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci assert(is1.gcount() == 0); 511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci assert(is.gcount() == 0); 52c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) assert(is.rdbuf() == 0); 53c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) assert(is.tie() == 0); 54c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) assert(is.fill() == ' '); 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) assert(is.rdstate() == is.goodbit); 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) assert(is.exceptions() == is.goodbit); 57a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) assert(is.flags() == (is.skipws | is.dec)); 58a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) assert(is.precision() == 6); 59a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) assert(is.getloc().name() == "C"); 60a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) } 61a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) { 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) testbuf<wchar_t> sb; 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test_iostream<wchar_t> is1(&sb); 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test_iostream<wchar_t> is(std::move(is1)); 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) assert(is1.gcount() == 0); 66 assert(is.gcount() == 0); 67 assert(is1.rdbuf() == &sb); 68 assert(is.rdbuf() == 0); 69 assert(is.tie() == 0); 70 assert(is.fill() == L' '); 71 assert(is.rdstate() == is.goodbit); 72 assert(is.exceptions() == is.goodbit); 73 assert(is.flags() == (is.skipws | is.dec)); 74 assert(is.precision() == 6); 75 assert(is.getloc().name() == "C"); 76 } 77#endif // _LIBCPP_MOVE 78} 79