Hi, tested x86_64-linux, committed to mainline.
Paolo. ////////////////////////
2011-06-14 Paolo Carlini <paolo.carl...@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.
Index: include/std/valarray =================================================================== --- include/std/valarray (revision 175025) +++ include/std/valarray (working copy) @@ -165,7 +165,7 @@ template<class _Dom> valarray(const _Expr<_Dom, _Tp>& __e); - ~valarray(); + ~valarray() _GLIBCXX_NOEXCEPT; // _lib.valarray.assign_ assignment: /** @@ -697,7 +697,7 @@ 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); Index: include/bits/unique_ptr.h =================================================================== --- include/bits/unique_ptr.h (revision 175025) +++ include/bits/unique_ptr.h (working copy) @@ -166,7 +166,7 @@ #endif // Destructor. - ~unique_ptr() { reset(); } + ~unique_ptr() noexcept { reset(); } // Assignment. unique_ptr& Index: testsuite/26_numerics/valarray/noexcept_move_construct.cc =================================================================== --- testsuite/26_numerics/valarray/noexcept_move_construct.cc (revision 0) +++ testsuite/26_numerics/valarray/noexcept_move_construct.cc (revision 0) @@ -0,0 +1,27 @@ +// { dg-do compile } +// { dg-options "-std=gnu++0x" } + +// 2011-06-14 Paolo Carlini <paolo.carl...@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"); Index: testsuite/20_util/shared_ptr/cons/noexcept_move_construct.cc =================================================================== --- testsuite/20_util/shared_ptr/cons/noexcept_move_construct.cc (revision 0) +++ testsuite/20_util/shared_ptr/cons/noexcept_move_construct.cc (revision 0) @@ -0,0 +1,27 @@ +// { dg-do compile } +// { dg-options "-std=gnu++0x" } + +// 2011-06-14 Paolo Carlini <paolo.carl...@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"); Index: testsuite/20_util/unique_ptr/cons/noexcept_move_construct.cc =================================================================== --- testsuite/20_util/unique_ptr/cons/noexcept_move_construct.cc (revision 0) +++ testsuite/20_util/unique_ptr/cons/noexcept_move_construct.cc (revision 0) @@ -0,0 +1,27 @@ +// { dg-do compile } +// { dg-options "-std=gnu++0x" } + +// 2011-06-14 Paolo Carlini <paolo.carl...@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"); Index: testsuite/20_util/weak_ptr/cons/noexcept_move_construct.cc =================================================================== --- testsuite/20_util/weak_ptr/cons/noexcept_move_construct.cc (revision 0) +++ testsuite/20_util/weak_ptr/cons/noexcept_move_construct.cc (revision 0) @@ -0,0 +1,27 @@ +// { dg-do compile } +// { dg-options "-std=gnu++0x" } + +// 2011-06-14 Paolo Carlini <paolo.carl...@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");