1272343Sngie// { dg-options "-std=gnu++11" } 2272343Sngie// { dg-require-string-conversions "" } 3272343Sngie 4272343Sngie// Copyright (C) 2007-2015 Free Software Foundation, Inc. 5272343Sngie// 6272343Sngie// This file is part of the GNU ISO C++ Library. This library is free 7272343Sngie// software; you can redistribute it and/or modify it under the 8272343Sngie// terms of the GNU General Public License as published by the 9272343Sngie// Free Software Foundation; either version 3, or (at your option) 10272343Sngie// any later version. 11 12// This library is distributed in the hope that it will be useful, 13// but WITHOUT ANY WARRANTY; without even the implied warranty of 14// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15// GNU General Public License for more details. 16 17// You should have received a copy of the GNU General Public License along 18// with this library; see the file COPYING3. If not see 19// <http://www.gnu.org/licenses/>. 20 21 22// NOTE: This makes use of the fact that we know how moveable 23// is implemented on vstring (via swap). If the implementation changes 24// this test may begin to fail. 25 26#include <ext/vstring.h> 27#include <utility> 28#include <testsuite_hooks.h> 29 30void test01() 31{ 32 bool test __attribute__((unused)) = true; 33 34 __gnu_cxx::__sso_string a,b; 35 a.push_back('1'); 36 b = std::move(a); 37 VERIFY( b.size() == 1 && b[0] == '1' && a.size() == 0 ); 38 39 __gnu_cxx::__sso_string c(std::move(b)); 40 VERIFY( c.size() == 1 && c[0] == '1' ); 41 VERIFY( b.size() == 0 ); 42} 43 44void test02() 45{ 46 bool test __attribute__((unused)) = true; 47 48 __gnu_cxx::__rc_string a,b; 49 a.push_back('1'); 50 b = std::move(a); 51 VERIFY( b.size() == 1 && b[0] == '1' && a.size() == 0 ); 52 53 __gnu_cxx::__rc_string c(std::move(b)); 54 VERIFY( c.size() == 1 && c[0] == '1' ); 55 VERIFY( b.size() == 0 ); 56} 57 58int main() 59{ 60 test01(); 61 test02(); 62 return 0; 63} 64