move.pass.cpp 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  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. // UNSUPPORTED: c++98, c++03
  10. // <sstream>
  11. // template <class charT, class traits = char_traits<charT>, class Allocator = allocator<charT> >
  12. // class basic_stringstream
  13. // basic_stringstream& operator=(basic_stringstream&& rhs);
  14. #include <sstream>
  15. #include <cassert>
  16. int main()
  17. {
  18. {
  19. std::stringstream ss0(" 123 456 ");
  20. std::stringstream ss;
  21. ss = std::move(ss0);
  22. assert(ss.rdbuf() != 0);
  23. assert(ss.good());
  24. assert(ss.str() == " 123 456 ");
  25. int i = 0;
  26. ss >> i;
  27. assert(i == 123);
  28. ss >> i;
  29. assert(i == 456);
  30. ss << i << ' ' << 123;
  31. assert(ss.str() == "456 1236 ");
  32. }
  33. {
  34. std::wstringstream ss0(L" 123 456 ");
  35. std::wstringstream ss;
  36. ss = std::move(ss0);
  37. assert(ss.rdbuf() != 0);
  38. assert(ss.good());
  39. assert(ss.str() == L" 123 456 ");
  40. int i = 0;
  41. ss >> i;
  42. assert(i == 123);
  43. ss >> i;
  44. assert(i == 456);
  45. ss << i << ' ' << 123;
  46. assert(ss.str() == L"456 1236 ");
  47. }
  48. }