move.pass.cpp revision bc8d3f97eb5c958007f2713238472e0c1c8fe02c
1868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)//===----------------------------------------------------------------------===// 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// ��������������������The LLVM Compiler Infrastructure 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 51320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// This file is distributed under the University of Illinois Open Source 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// License. See LICENSE.TXT for details. 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//===----------------------------------------------------------------------===// 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// <istream> 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// template <class charT, class traits = char_traits<charT> > 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// class basic_iostream; 14868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// basic_iostream(basic_iostream&& rhs); 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include <istream> 181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include <cassert> 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#ifdef _LIBCPP_MOVE 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)template <class CharT> 23c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)struct testbuf 2490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) : public std::basic_streambuf<CharT> 2590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles){ 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) testbuf() {} 2790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)}; 2890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 2990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)template <class CharT> 3090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)struct test_iostream 3190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) : public std::basic_iostream<CharT> 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 3390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) typedef std::basic_iostream<CharT> base; 34868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) test_iostream(testbuf<CharT>* sb) : base(sb) {} 35868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 36868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) test_iostream(test_iostream&& s) 37868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) : base(std::move(s)) {} 38868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)}; 3990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 4190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 4290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)int main() 4390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles){ 4490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#ifdef _LIBCPP_MOVE 4590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) { 4690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) testbuf<char> sb; 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test_iostream<char> is1(&sb); 4890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) test_iostream<char> is(std::move(is1)); 4990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) assert(is1.rdbuf() == &sb); 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) assert(is1.gcount() == 0); 5190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) assert(is.gcount() == 0); 5290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) assert(is.rdbuf() == 0); 5390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) assert(is.tie() == 0); 5490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) assert(is.fill() == ' '); 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) assert(is.rdstate() == is.goodbit); 5690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) assert(is.exceptions() == is.goodbit); 5790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) assert(is.flags() == (is.skipws | is.dec)); 5890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) assert(is.precision() == 6); 5990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) assert(is.getloc().name() == "C"); 6090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) } 6190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) { 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) testbuf<wchar_t> sb; 6390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) test_iostream<wchar_t> is1(&sb); 6490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) test_iostream<wchar_t> is(std::move(is1)); 6590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) assert(is1.gcount() == 0); 6690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) assert(is.gcount() == 0); 6790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) assert(is1.rdbuf() == &sb); 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) assert(is.rdbuf() == 0); 6990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) assert(is.tie() == 0); 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) assert(is.fill() == L' '); 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) assert(is.rdstate() == is.goodbit); 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) assert(is.exceptions() == is.goodbit); 7390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) assert(is.flags() == (is.skipws | is.dec)); 7490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) assert(is.precision() == 6); 75c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch assert(is.getloc().name() == "C"); 76c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch } 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 78c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch} 79c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)