(root)/
gcc-13.2.0/
libstdc++-v3/
testsuite/
23_containers/
list/
cons/
moveable.h
       1  // Copyright (C) 2009-2023 Free Software Foundation, Inc.
       2  //
       3  // This file is part of the GNU ISO C++ Library.  This library is free
       4  // software; you can redistribute it and/or modify it under the
       5  // terms of the GNU General Public License as published by the
       6  // Free Software Foundation; either version 3, or (at your option)
       7  // any later version.
       8  
       9  // This library is distributed in the hope that it will be useful,
      10  // but WITHOUT ANY WARRANTY; without even the implied warranty of
      11  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      12  // GNU General Public License for more details.
      13  
      14  // You should have received a copy of the GNU General Public License along
      15  // with this library; see the file COPYING3.  If not see
      16  // <http://www.gnu.org/licenses/>.
      17  
      18  // NOTE: This makes use of the fact that we know how moveable
      19  // is implemented on list (via swap). If the implementation changed
      20  // this test may begin to fail.
      21  
      22  #include <utility>
      23  #include <testsuite_hooks.h>
      24  
      25  template<typename _Tp>
      26    void
      27    test_moveable()
      28    {
      29      typedef _Tp list_type;
      30      
      31      list_type a,b;
      32      a.push_back(1);
      33      b = std::move(a);
      34      VERIFY( b.size() == 1 && *b.begin() == 1 && a.size() == 0 );
      35      
      36      list_type c(std::move(b));
      37      VERIFY( c.size() == 1 && *c.begin() == 1 );
      38      VERIFY( b.size() == 0 );
      39    }