valarray (~valarray): Use noexcept.
authorPaolo Carlini <paolo.carlini@oracle.com>
Tue, 14 Jun 2011 17:48:29 +0000 (17:48 +0000)
committerPaolo Carlini <paolo@gcc.gnu.org>
Tue, 14 Jun 2011 17:48:29 +0000 (17:48 +0000)
2011-06-14  Paolo Carlini  <paolo.carlini@oracle.com>

* include/std/valarray (~valarray): Use noexcept.
* include/bits/unique_ptr.h (~unique_ptr): Likewise.
* testsuite/26_numerics/valarray/noexcept_move_construct.cc: New.
* testsuite/20_util/shared_ptr/cons/noexcept_move_construct.cc:
Likewise.
* testsuite/20_util/unique_ptr/cons/noexcept_move_construct.cc:
Likewise.
* testsuite/20_util/weak_ptr/cons/noexcept_move_construct.cc:
Likewise.

From-SVN: r175039

libstdc++-v3/ChangeLog
libstdc++-v3/include/bits/unique_ptr.h
libstdc++-v3/include/std/valarray
libstdc++-v3/testsuite/20_util/shared_ptr/cons/noexcept_move_construct.cc [new file with mode: 0644]
libstdc++-v3/testsuite/20_util/unique_ptr/cons/noexcept_move_construct.cc [new file with mode: 0644]
libstdc++-v3/testsuite/20_util/weak_ptr/cons/noexcept_move_construct.cc [new file with mode: 0644]
libstdc++-v3/testsuite/26_numerics/valarray/noexcept_move_construct.cc [new file with mode: 0644]

index ebe9f200cd8344be1dd6e088cc002b710e894572..fbd45e6ca8c7e86e43a71b731ce5ac03e6650be9 100644 (file)
@@ -1,3 +1,15 @@
+2011-06-14  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       * include/std/valarray (~valarray): Use noexcept.
+       * include/bits/unique_ptr.h (~unique_ptr): Likewise.
+       * testsuite/26_numerics/valarray/noexcept_move_construct.cc: New.
+       * testsuite/20_util/shared_ptr/cons/noexcept_move_construct.cc:
+       Likewise.
+       * testsuite/20_util/unique_ptr/cons/noexcept_move_construct.cc:
+       Likewise.
+       * testsuite/20_util/weak_ptr/cons/noexcept_move_construct.cc:
+       Likewise.
+
 2011-06-14  Paolo Carlini  <paolo.carlini@oracle.com>
 
        * include/std/functional: Use noexcept.
index ec9c3c0b5c3315c4b602d8347d833b7a1da83759..a6f457ee59e33a226ac870075f35110265ea9c9a 100644 (file)
@@ -166,7 +166,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 #endif
 
       // Destructor.
-      ~unique_ptr() { reset(); }
+      ~unique_ptr() noexcept { reset(); }
 
       // Assignment.
       unique_ptr&
index de6886858c00f9d489360da538c855f72a8dfc60..e66333e9af267fbd27239ff9f739ce28afd3d822 100644 (file)
@@ -165,7 +165,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       template<class _Dom>
        valarray(const _Expr<_Dom, _Tp>& __e);
 
-      ~valarray();
+      ~valarray() _GLIBCXX_NOEXCEPT;
 
       // _lib.valarray.assign_ assignment:
       /**
@@ -697,7 +697,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
   template<typename _Tp>
     inline
-    valarray<_Tp>::~valarray()
+    valarray<_Tp>::~valarray() _GLIBCXX_NOEXCEPT
     {
       std::__valarray_destroy_elements(_M_data, _M_data + _M_size);
       std::__valarray_release_memory(_M_data);
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/cons/noexcept_move_construct.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/cons/noexcept_move_construct.cc
new file mode 100644 (file)
index 0000000..640a54b
--- /dev/null
@@ -0,0 +1,27 @@
+// { dg-do compile }
+// { dg-options "-std=gnu++0x" }
+
+// 2011-06-14  Paolo Carlini  <paolo.carlini@oracle.com>
+//
+// Copyright (C) 2011 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 <memory>
+
+typedef std::shared_ptr<int> sptype;
+
+static_assert(std::is_nothrow_move_constructible<sptype>::value, "Error");
diff --git a/libstdc++-v3/testsuite/20_util/unique_ptr/cons/noexcept_move_construct.cc b/libstdc++-v3/testsuite/20_util/unique_ptr/cons/noexcept_move_construct.cc
new file mode 100644 (file)
index 0000000..c5de14f
--- /dev/null
@@ -0,0 +1,27 @@
+// { dg-do compile }
+// { dg-options "-std=gnu++0x" }
+
+// 2011-06-14  Paolo Carlini  <paolo.carlini@oracle.com>
+//
+// Copyright (C) 2011 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 <memory>
+
+typedef std::unique_ptr<int> uptype;
+
+static_assert(std::is_nothrow_move_constructible<uptype>::value, "Error");
diff --git a/libstdc++-v3/testsuite/20_util/weak_ptr/cons/noexcept_move_construct.cc b/libstdc++-v3/testsuite/20_util/weak_ptr/cons/noexcept_move_construct.cc
new file mode 100644 (file)
index 0000000..4e9a90d
--- /dev/null
@@ -0,0 +1,27 @@
+// { dg-do compile }
+// { dg-options "-std=gnu++0x" }
+
+// 2011-06-14  Paolo Carlini  <paolo.carlini@oracle.com>
+//
+// Copyright (C) 2011 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 <memory>
+
+typedef std::weak_ptr<int> wptype;
+
+static_assert(std::is_nothrow_move_constructible<wptype>::value, "Error");
diff --git a/libstdc++-v3/testsuite/26_numerics/valarray/noexcept_move_construct.cc b/libstdc++-v3/testsuite/26_numerics/valarray/noexcept_move_construct.cc
new file mode 100644 (file)
index 0000000..3d7fdc3
--- /dev/null
@@ -0,0 +1,27 @@
+// { dg-do compile }
+// { dg-options "-std=gnu++0x" }
+
+// 2011-06-14  Paolo Carlini  <paolo.carlini@oracle.com>
+//
+// Copyright (C) 2011 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 <valarray>
+
+typedef std::valarray<int> vtype;
+
+static_assert(std::is_nothrow_move_constructible<vtype>::value, "Error");