re PR libstdc++/58338 (Add noexcept to functions with a narrow contract)
authorMarc Glisse <marc.glisse@inria.fr>
Wed, 18 Sep 2013 18:31:01 +0000 (20:31 +0200)
committerMarc Glisse <glisse@gcc.gnu.org>
Wed, 18 Sep 2013 18:31:01 +0000 (18:31 +0000)
2013-09-18  Marc Glisse  <marc.glisse@inria.fr>

PR libstdc++/58338
* include/bits/stl_iterator.h (__normal_iterator) [__normal_iterator,
_M_const_cast, operator*, operator->, operator++, operator--,
operator[], operator+=, operator+, operator-=, operator-, base]:
Mark as noexcept.
(operator==(const __normal_iterator&, const __normal_iterator&),
operator!=(const __normal_iterator&, const __normal_iterator&),
operator<(const __normal_iterator&, const __normal_iterator&),
operator>(const __normal_iterator&, const __normal_iterator&),
operator<=(const __normal_iterator&, const __normal_iterator&),
operator>=(const __normal_iterator&, const __normal_iterator&),
operator-(const __normal_iterator&, const __normal_iterator&),
operator+(difference_type, const __normal_iterator&)): Likewise.
* include/bits/stl_list.h (list) [splice, _M_check_equal_allocators]:
Likewise.
(list::_M_check_equal_allocators): Abort instead of throwing.
* include/debug/array (array) [operator[], front, back]: Mark as
noexcept.
* include/profile/array (array) [operator[], front, back]: Likewise.
* include/std/array (array) [operator[], front, back]: Likewise.
* include/debug/list (list::splice): Likewise.
* include/profile/list (list::splice): Likewise.
* testsuite/23_containers/list/operations/5.cc: Remove file.
* testsuite/23_containers/list/operations/5.h: Likewise.

From-SVN: r202716

libstdc++-v3/ChangeLog
libstdc++-v3/include/bits/stl_iterator.h
libstdc++-v3/include/bits/stl_list.h
libstdc++-v3/include/debug/array
libstdc++-v3/include/debug/list
libstdc++-v3/include/profile/array
libstdc++-v3/include/profile/list
libstdc++-v3/include/std/array
libstdc++-v3/testsuite/23_containers/list/operations/5.cc [deleted file]
libstdc++-v3/testsuite/23_containers/list/operations/5.h [deleted file]

index cf411e6c96349758db3d2f181aea9fbf7203e2d8..77b5e12d0762e54484de4494ddf8287db4326cc9 100644 (file)
@@ -1,3 +1,30 @@
+2013-09-18  Marc Glisse  <marc.glisse@inria.fr>
+
+       PR libstdc++/58338
+       * include/bits/stl_iterator.h (__normal_iterator) [__normal_iterator,
+       _M_const_cast, operator*, operator->, operator++, operator--,
+       operator[], operator+=, operator+, operator-=, operator-, base]:
+       Mark as noexcept.
+       (operator==(const __normal_iterator&, const __normal_iterator&),
+       operator!=(const __normal_iterator&, const __normal_iterator&),
+       operator<(const __normal_iterator&, const __normal_iterator&),
+       operator>(const __normal_iterator&, const __normal_iterator&),
+       operator<=(const __normal_iterator&, const __normal_iterator&),
+       operator>=(const __normal_iterator&, const __normal_iterator&),
+       operator-(const __normal_iterator&, const __normal_iterator&),
+       operator+(difference_type, const __normal_iterator&)): Likewise.
+       * include/bits/stl_list.h (list) [splice, _M_check_equal_allocators]:
+       Likewise.
+       (list::_M_check_equal_allocators): Abort instead of throwing.
+       * include/debug/array (array) [operator[], front, back]: Mark as
+       noexcept.
+       * include/profile/array (array) [operator[], front, back]: Likewise.
+       * include/std/array (array) [operator[], front, back]: Likewise.
+       * include/debug/list (list::splice): Likewise.
+       * include/profile/list (list::splice): Likewise.
+       * testsuite/23_containers/list/operations/5.cc: Remove file.
+       * testsuite/23_containers/list/operations/5.h: Likewise.
+
 2013-09-18  Tim Shen  <timshen91@gmail.com>
 
        * include/bits/regex.h: Add friend classes.
index cde442fb249e02392070c16e44e6828d292d2ba4..1f555a4ef284eef3f67787769bf3634adec76c05 100644 (file)
@@ -721,22 +721,24 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       typedef typename __traits_type::reference        reference;
       typedef typename __traits_type::pointer          pointer;
 
-      _GLIBCXX_CONSTEXPR __normal_iterator() : _M_current(_Iterator()) { }
+      _GLIBCXX_CONSTEXPR __normal_iterator() _GLIBCXX_NOEXCEPT
+      : _M_current(_Iterator()) { }
 
       explicit
-      __normal_iterator(const _Iterator& __i) : _M_current(__i) { }
+      __normal_iterator(const _Iterator& __i) _GLIBCXX_NOEXCEPT
+      : _M_current(__i) { }
 
       // Allow iterator to const_iterator conversion
       template<typename _Iter>
         __normal_iterator(const __normal_iterator<_Iter,
                          typename __enable_if<
               (std::__are_same<_Iter, typename _Container::pointer>::__value),
-                     _Container>::__type>& __i)
+                     _Container>::__type>& __i) _GLIBCXX_NOEXCEPT
         : _M_current(__i.base()) { }
 
 #if __cplusplus >= 201103L
       __normal_iterator<typename _Container::pointer, _Container>
-      _M_const_cast() const
+      _M_const_cast() const noexcept
       {
        using _PTraits = std::pointer_traits<typename _Container::pointer>;
        return __normal_iterator<typename _Container::pointer, _Container>
@@ -751,59 +753,59 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
       // Forward iterator requirements
       reference
-      operator*() const
+      operator*() const _GLIBCXX_NOEXCEPT
       { return *_M_current; }
 
       pointer
-      operator->() const
+      operator->() const _GLIBCXX_NOEXCEPT
       { return _M_current; }
 
       __normal_iterator&
-      operator++()
+      operator++() _GLIBCXX_NOEXCEPT
       {
        ++_M_current;
        return *this;
       }
 
       __normal_iterator
-      operator++(int)
+      operator++(int) _GLIBCXX_NOEXCEPT
       { return __normal_iterator(_M_current++); }
 
       // Bidirectional iterator requirements
       __normal_iterator&
-      operator--()
+      operator--() _GLIBCXX_NOEXCEPT
       {
        --_M_current;
        return *this;
       }
 
       __normal_iterator
-      operator--(int)
+      operator--(int) _GLIBCXX_NOEXCEPT
       { return __normal_iterator(_M_current--); }
 
       // Random access iterator requirements
       reference
-      operator[](difference_type __n) const
+      operator[](difference_type __n) const _GLIBCXX_NOEXCEPT
       { return _M_current[__n]; }
 
       __normal_iterator&
-      operator+=(difference_type __n)
+      operator+=(difference_type __n) _GLIBCXX_NOEXCEPT
       { _M_current += __n; return *this; }
 
       __normal_iterator
-      operator+(difference_type __n) const
+      operator+(difference_type __n) const _GLIBCXX_NOEXCEPT
       { return __normal_iterator(_M_current + __n); }
 
       __normal_iterator&
-      operator-=(difference_type __n)
+      operator-=(difference_type __n) _GLIBCXX_NOEXCEPT
       { _M_current -= __n; return *this; }
 
       __normal_iterator
-      operator-(difference_type __n) const
+      operator-(difference_type __n) const _GLIBCXX_NOEXCEPT
       { return __normal_iterator(_M_current - __n); }
 
       const _Iterator&
-      base() const
+      base() const _GLIBCXX_NOEXCEPT
       { return _M_current; }
     };
 
@@ -820,24 +822,28 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     inline bool
     operator==(const __normal_iterator<_IteratorL, _Container>& __lhs,
               const __normal_iterator<_IteratorR, _Container>& __rhs)
+    _GLIBCXX_NOEXCEPT
     { return __lhs.base() == __rhs.base(); }
 
   template<typename _Iterator, typename _Container>
     inline bool
     operator==(const __normal_iterator<_Iterator, _Container>& __lhs,
               const __normal_iterator<_Iterator, _Container>& __rhs)
+    _GLIBCXX_NOEXCEPT
     { return __lhs.base() == __rhs.base(); }
 
   template<typename _IteratorL, typename _IteratorR, typename _Container>
     inline bool
     operator!=(const __normal_iterator<_IteratorL, _Container>& __lhs,
               const __normal_iterator<_IteratorR, _Container>& __rhs)
+    _GLIBCXX_NOEXCEPT
     { return __lhs.base() != __rhs.base(); }
 
   template<typename _Iterator, typename _Container>
     inline bool
     operator!=(const __normal_iterator<_Iterator, _Container>& __lhs,
               const __normal_iterator<_Iterator, _Container>& __rhs)
+    _GLIBCXX_NOEXCEPT
     { return __lhs.base() != __rhs.base(); }
 
   // Random access iterator requirements
@@ -845,48 +851,56 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     inline bool
     operator<(const __normal_iterator<_IteratorL, _Container>& __lhs,
              const __normal_iterator<_IteratorR, _Container>& __rhs)
+    _GLIBCXX_NOEXCEPT
     { return __lhs.base() < __rhs.base(); }
 
   template<typename _Iterator, typename _Container>
     inline bool
     operator<(const __normal_iterator<_Iterator, _Container>& __lhs,
              const __normal_iterator<_Iterator, _Container>& __rhs)
+    _GLIBCXX_NOEXCEPT
     { return __lhs.base() < __rhs.base(); }
 
   template<typename _IteratorL, typename _IteratorR, typename _Container>
     inline bool
     operator>(const __normal_iterator<_IteratorL, _Container>& __lhs,
              const __normal_iterator<_IteratorR, _Container>& __rhs)
+    _GLIBCXX_NOEXCEPT
     { return __lhs.base() > __rhs.base(); }
 
   template<typename _Iterator, typename _Container>
     inline bool
     operator>(const __normal_iterator<_Iterator, _Container>& __lhs,
              const __normal_iterator<_Iterator, _Container>& __rhs)
+    _GLIBCXX_NOEXCEPT
     { return __lhs.base() > __rhs.base(); }
 
   template<typename _IteratorL, typename _IteratorR, typename _Container>
     inline bool
     operator<=(const __normal_iterator<_IteratorL, _Container>& __lhs,
               const __normal_iterator<_IteratorR, _Container>& __rhs)
+    _GLIBCXX_NOEXCEPT
     { return __lhs.base() <= __rhs.base(); }
 
   template<typename _Iterator, typename _Container>
     inline bool
     operator<=(const __normal_iterator<_Iterator, _Container>& __lhs,
               const __normal_iterator<_Iterator, _Container>& __rhs)
+    _GLIBCXX_NOEXCEPT
     { return __lhs.base() <= __rhs.base(); }
 
   template<typename _IteratorL, typename _IteratorR, typename _Container>
     inline bool
     operator>=(const __normal_iterator<_IteratorL, _Container>& __lhs,
               const __normal_iterator<_IteratorR, _Container>& __rhs)
+    _GLIBCXX_NOEXCEPT
     { return __lhs.base() >= __rhs.base(); }
 
   template<typename _Iterator, typename _Container>
     inline bool
     operator>=(const __normal_iterator<_Iterator, _Container>& __lhs,
               const __normal_iterator<_Iterator, _Container>& __rhs)
+    _GLIBCXX_NOEXCEPT
     { return __lhs.base() >= __rhs.base(); }
 
   // _GLIBCXX_RESOLVE_LIB_DEFECTS
@@ -898,7 +912,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     // DR 685.
     inline auto
     operator-(const __normal_iterator<_IteratorL, _Container>& __lhs,
-             const __normal_iterator<_IteratorR, _Container>& __rhs)
+             const __normal_iterator<_IteratorR, _Container>& __rhs) noexcept
     -> decltype(__lhs.base() - __rhs.base())
 #else
     inline typename __normal_iterator<_IteratorL, _Container>::difference_type
@@ -911,12 +925,14 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     inline typename __normal_iterator<_Iterator, _Container>::difference_type
     operator-(const __normal_iterator<_Iterator, _Container>& __lhs,
              const __normal_iterator<_Iterator, _Container>& __rhs)
+    _GLIBCXX_NOEXCEPT
     { return __lhs.base() - __rhs.base(); }
 
   template<typename _Iterator, typename _Container>
     inline __normal_iterator<_Iterator, _Container>
     operator+(typename __normal_iterator<_Iterator, _Container>::difference_type
              __n, const __normal_iterator<_Iterator, _Container>& __i)
+    _GLIBCXX_NOEXCEPT
     { return __normal_iterator<_Iterator, _Container>(__i.base() + __n); }
 
 _GLIBCXX_END_NAMESPACE_VERSION
index 4b009ccfa155c2dc3eddb84d685c7fafd779f5b1..71ef819176c48747570a0ac582c8205821a4a2a9 100644 (file)
@@ -1309,7 +1309,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
        */
       void
 #if __cplusplus >= 201103L
-      splice(const_iterator __position, list&& __x)
+      splice(const_iterator __position, list&& __x) noexcept
 #else
       splice(iterator __position, list& __x)
 #endif
@@ -1325,7 +1325,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
 
 #if __cplusplus >= 201103L
       void
-      splice(const_iterator __position, list& __x)
+      splice(const_iterator __position, list& __x) noexcept
       { splice(__position, std::move(__x)); }
 #endif
 
@@ -1341,7 +1341,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
        *  inserts it into the current list before @a __position.
        */
       void
-      splice(const_iterator __position, list&& __x, const_iterator __i)
+      splice(const_iterator __position, list&& __x, const_iterator __i) noexcept
 #else
       /**
        *  @brief  Insert element from another %list.
@@ -1380,7 +1380,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
        *  inserts it into the current list before @a __position.
        */
       void
-      splice(const_iterator __position, list& __x, const_iterator __i)
+      splice(const_iterator __position, list& __x, const_iterator __i) noexcept
       { splice(__position, std::move(__x), __i); }
 #endif
 
@@ -1400,7 +1400,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
        */
       void
       splice(const_iterator __position, list&& __x, const_iterator __first,
-            const_iterator __last)
+            const_iterator __last) noexcept
 #else
       /**
        *  @brief  Insert range from another %list.
@@ -1446,7 +1446,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
        */
       void
       splice(const_iterator __position, list& __x, const_iterator __first,
-            const_iterator __last)
+            const_iterator __last) noexcept
       { splice(__position, std::move(__x), __first, __last); }
 #endif
 
@@ -1696,11 +1696,11 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
 
       // To implement the splice (and merge) bits of N1599.
       void
-      _M_check_equal_allocators(list& __x)
+      _M_check_equal_allocators(list& __x) _GLIBCXX_NOEXCEPT
       {
        if (std::__alloc_neq<typename _Base::_Node_alloc_type>::
            _S_do_it(_M_get_Node_allocator(), __x._M_get_Node_allocator()))
-         __throw_runtime_error(__N("list::_M_check_equal_allocators"));
+         __builtin_abort();
       }
     };
 
index bce10cf3f1207fc918075887801c99694a0216a5..d3eea85385677c328d6860604665d7179da802dc 100644 (file)
@@ -147,7 +147,7 @@ namespace __debug
 
       // Element access.
       reference
-      operator[](size_type __n)
+      operator[](size_type __n) noexcept
       {
        __glibcxx_check_subscript(__n);
        return _AT_Type::_S_ref(_M_elems, __n);
@@ -180,14 +180,14 @@ namespace __debug
       }
 
       reference 
-      front()
+      front() noexcept
       {
        __glibcxx_check_nonempty();
        return *begin();
       }
 
       constexpr const_reference 
-      front() const
+      front() const noexcept
       {
        return _Nm ? _AT_Type::_S_ref(_M_elems, 0)
          : (_GLIBCXX_THROW_OR_ABORT(_Array_check_nonempty<_Nm>()),
@@ -195,14 +195,14 @@ namespace __debug
       }
 
       reference 
-      back()
+      back() noexcept
       {
        __glibcxx_check_nonempty();
        return _Nm ? *(end() - 1) : *end();
       }
 
       constexpr const_reference 
-      back() const
+      back() const noexcept
       {
        return _Nm ? _AT_Type::_S_ref(_M_elems, _Nm - 1)
          : (_GLIBCXX_THROW_OR_ABORT(_Array_check_nonempty<_Nm>()),
index bd407e64a98e5374afe573f2a1caa529873569aa..89c26e425ae0f4df7d969e95bec4d1a93e8d09b6 100644 (file)
@@ -515,7 +515,7 @@ namespace __debug
       // 23.2.2.4 list operations:
       void
 #if __cplusplus >= 201103L
-      splice(const_iterator __position, list&& __x)
+      splice(const_iterator __position, list&& __x) noexcept
 #else
       splice(iterator __position, list& __x)
 #endif
@@ -529,13 +529,13 @@ namespace __debug
 
 #if __cplusplus >= 201103L
       void
-      splice(const_iterator __position, list& __x)
+      splice(const_iterator __position, list& __x) noexcept
       { splice(__position, std::move(__x)); }
 #endif
 
       void
 #if __cplusplus >= 201103L
-      splice(const_iterator __position, list&& __x, const_iterator __i)
+      splice(const_iterator __position, list&& __x, const_iterator __i) noexcept
 #else
       splice(iterator __position, list& __x, iterator __i)
 #endif
@@ -561,14 +561,14 @@ namespace __debug
 
 #if __cplusplus >= 201103L
       void
-      splice(const_iterator __position, list& __x, const_iterator __i)
+      splice(const_iterator __position, list& __x, const_iterator __i) noexcept
       { splice(__position, std::move(__x), __i); }
 #endif
 
       void
 #if __cplusplus >= 201103L
       splice(const_iterator __position, list&& __x, const_iterator __first,
-            const_iterator __last)
+            const_iterator __last) noexcept
 #else
       splice(iterator __position, list& __x, iterator __first,
             iterator __last)
@@ -608,7 +608,7 @@ namespace __debug
 #if __cplusplus >= 201103L
       void
       splice(const_iterator __position, list& __x,
-            const_iterator __first, const_iterator __last)
+            const_iterator __first, const_iterator __last) noexcept
       { splice(__position, std::move(__x), __first, __last); }
 #endif
 
index bd6da6ca3960d0eecd70526ae6d16b8a60d4fa37..33bdc9520968a2440e4e09d43826329edc722227 100644 (file)
@@ -127,7 +127,7 @@ namespace __profile
 
       // Element access.
       reference
-      operator[](size_type __n)
+      operator[](size_type __n) noexcept
       {        return _AT_Type::_S_ref(_M_elems, __n); }
 
       constexpr const_reference
@@ -153,19 +153,19 @@ namespace __profile
       }
 
       reference 
-      front()
+      front() noexcept
       { return *begin(); }
 
       constexpr const_reference 
-      front() const
+      front() const noexcept
       { return _AT_Type::_S_ref(_M_elems, 0); }
 
       reference 
-      back()
+      back() noexcept
       { return _Nm ? *(end() - 1) : *end(); }
 
       constexpr const_reference 
-      back() const
+      back() const noexcept
       {
        return _Nm ? _AT_Type::_S_ref(_M_elems, _Nm - 1)
                   : _AT_Type::_S_ref(_M_elems, 0);       
index 778edf1e428c1d0a0ecfea8c3965f30ff66be679..6168c61ed1863bb7294a054cf03e7fb877368d76 100644 (file)
@@ -440,7 +440,7 @@ template<typename _Tp, typename _Allocator = std::allocator<_Tp> >
       // 23.2.2.4 list operations:
       void
 #if __cplusplus >= 201103L
-      splice(const_iterator __position, list&& __x)
+      splice(const_iterator __position, list&& __x) noexcept
 #else
       splice(iterator __position, list& __x)
 #endif
@@ -448,7 +448,7 @@ template<typename _Tp, typename _Allocator = std::allocator<_Tp> >
 
 #if __cplusplus >= 201103L
       void
-      splice(const_iterator __position, list& __x)
+      splice(const_iterator __position, list& __x) noexcept
       { this->splice(__position, std::move(__x)); }
 
       void
@@ -458,7 +458,7 @@ template<typename _Tp, typename _Allocator = std::allocator<_Tp> >
 
       void
 #if __cplusplus >= 201103L
-      splice(const_iterator __position, list&& __x, const_iterator __i)
+      splice(const_iterator __position, list&& __x, const_iterator __i) noexcept
 #else
       splice(iterator __position, list& __x, iterator __i)
 #endif
@@ -474,7 +474,7 @@ template<typename _Tp, typename _Allocator = std::allocator<_Tp> >
       void
 #if __cplusplus >= 201103L
       splice(const_iterator __position, list&& __x, const_iterator __first,
-            const_iterator __last)
+            const_iterator __last) noexcept
 #else
       splice(iterator __position, list& __x, iterator __first,
             iterator __last)
@@ -490,7 +490,7 @@ template<typename _Tp, typename _Allocator = std::allocator<_Tp> >
 #if __cplusplus >= 201103L
       void
       splice(const_iterator __position, list& __x,
-            const_iterator __first, const_iterator __last)
+            const_iterator __first, const_iterator __last) noexcept
       { this->splice(__position, std::move(__x), __first, __last); }
 #endif
 
index 0d2a71c8cbc7829c91aca6b1e72dde3caceb21ae..86e8aee14baf21cd2463a04832f3fb9c0791ed2b 100644 (file)
@@ -169,7 +169,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
 
       // Element access.
       reference
-      operator[](size_type __n)
+      operator[](size_type __n) noexcept
       { return _AT_Type::_S_ref(_M_elems, __n); }
 
       constexpr const_reference
@@ -195,19 +195,19 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
       }
 
       reference 
-      front()
+      front() noexcept
       { return *begin(); }
 
       constexpr const_reference 
-      front() const
+      front() const noexcept
       { return _AT_Type::_S_ref(_M_elems, 0); }
 
       reference 
-      back()
+      back() noexcept
       { return _Nm ? *(end() - 1) : *end(); }
 
       constexpr const_reference 
-      back() const
+      back() const noexcept
       { 
        return _Nm ? _AT_Type::_S_ref(_M_elems, _Nm - 1) 
                   : _AT_Type::_S_ref(_M_elems, 0);
diff --git a/libstdc++-v3/testsuite/23_containers/list/operations/5.cc b/libstdc++-v3/testsuite/23_containers/list/operations/5.cc
deleted file mode 100644 (file)
index fbb55b3..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-// 2006-01-19  Paolo Carlini  <pcarlini@suse.de>
-
-// Copyright (C) 2006-2013 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License along
-// with this library; see the file COPYING3.  If not see
-// <http://www.gnu.org/licenses/>.
-
-#include "5.h"
-#include <list>
-
-int main()
-{
-  typedef int value_type;
-  typedef __gnu_test::uneq_allocator<value_type> allocator_type;
-  typedef std::list<value_type, allocator_type> list_type;
-
-  operations05<list_type>();
-  return 0;
-}
diff --git a/libstdc++-v3/testsuite/23_containers/list/operations/5.h b/libstdc++-v3/testsuite/23_containers/list/operations/5.h
deleted file mode 100644 (file)
index 755ddd9..0000000
+++ /dev/null
@@ -1,134 +0,0 @@
-// 2006-01-19  Paolo Carlini  <pcarlini@suse.de>
-
-// Copyright (C) 2006-2013 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License along
-// with this library; see the file COPYING3.  If not see
-// <http://www.gnu.org/licenses/>.
-
-// 23.2.2.4 list operations [lib.list.ops]
-
-#include <stdexcept>
-#include <testsuite_hooks.h>
-#include <testsuite_allocator.h>
-
-// Check the splice (and merge) bits of N1599.
-template<typename _Tp>
-void
-operations05()
-{
-  bool test __attribute__((unused)) = true;
-  
-  typedef _Tp list_type;
-  typedef typename list_type::allocator_type allocator_type;
-
-  const int data1[] = {1, 2, 3, 4, 5};
-  const int data2[] = {6, 7, 8, 9, 10};
-  const size_t N1 = sizeof(data1) / sizeof(int);
-  const size_t N2 = sizeof(data2) / sizeof(int);
-  
-  allocator_type alloc01(1), alloc02(2);
-
-  list_type l01(data1, data1 + N1, alloc01);
-  const list_type l01_ref = l01;
-
-  list_type l02(data2, data2 + N2, alloc02);
-  const list_type l02_ref = l02;
-
-  bool catched = false;
-
-  try
-    {
-      l01.splice(l01.begin(), l02);
-    }
-  catch(std::runtime_error&)
-    {
-      catched = true;
-    }
-  catch(...)
-    {
-      VERIFY( false );
-    }
-  VERIFY( catched );
-  VERIFY( l01 == l01_ref );
-  VERIFY( l02 == l02_ref );
-  
-  catched = false;
-  try
-    {
-      l01.splice(l01.begin(), l02, l02.begin());
-    }
-  catch(std::runtime_error&)
-    {
-      catched = true;
-    }
-  catch(...)
-    {
-      VERIFY( false );
-    }
-  VERIFY( catched );
-  VERIFY( l01 == l01_ref );
-  VERIFY( l02 == l02_ref );
-
-  catched = false;
-  try
-    {
-      l01.splice(l01.begin(), l02, l02.begin(), l02.end());
-    }
-  catch(std::runtime_error&)
-    {
-      catched = true;
-    }
-  catch(...)
-    {
-      VERIFY( false );
-    }
-  VERIFY( catched );
-  VERIFY( l01 == l01_ref );
-  VERIFY( l02 == l02_ref );
-
-  catched = false;
-  try
-    {
-      l01.merge(l02);
-    }
-  catch(std::runtime_error&)
-    {
-      catched = true;
-    }
-  catch(...)
-    {
-      VERIFY( false );
-    }
-  VERIFY( catched );
-  VERIFY( l01 == l01_ref );
-  VERIFY( l02 == l02_ref );
-
-  catched = false;
-  try
-    {
-      l01.merge(l02, std::less<int>());
-    }
-  catch(std::runtime_error&)
-    {
-      catched = true;
-    }
-  catch(...)
-    {
-      VERIFY( false );
-    }
-  VERIFY( catched );
-  VERIFY( l01 == l01_ref );
-  VERIFY( l02 == l02_ref );
-}