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)