diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index ebe9f200cd8..fbd45e6ca8c 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,15 @@ +2011-06-14 Paolo Carlini + + * 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 * include/std/functional: Use noexcept. diff --git a/libstdc++-v3/include/bits/unique_ptr.h b/libstdc++-v3/include/bits/unique_ptr.h index ec9c3c0b5c3..a6f457ee59e 100644 --- a/libstdc++-v3/include/bits/unique_ptr.h +++ b/libstdc++-v3/include/bits/unique_ptr.h @@ -166,7 +166,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION #endif // Destructor. - ~unique_ptr() { reset(); } + ~unique_ptr() noexcept { reset(); } // Assignment. unique_ptr& diff --git a/libstdc++-v3/include/std/valarray b/libstdc++-v3/include/std/valarray index de6886858c0..e66333e9af2 100644 --- a/libstdc++-v3/include/std/valarray +++ b/libstdc++-v3/include/std/valarray @@ -165,7 +165,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION template valarray(const _Expr<_Dom, _Tp>& __e); - ~valarray(); + ~valarray() _GLIBCXX_NOEXCEPT; // _lib.valarray.assign_ assignment: /** @@ -697,7 +697,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION template 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 index 00000000000..640a54bafdb --- /dev/null +++ b/libstdc++-v3/testsuite/20_util/shared_ptr/cons/noexcept_move_construct.cc @@ -0,0 +1,27 @@ +// { dg-do compile } +// { dg-options "-std=gnu++0x" } + +// 2011-06-14 Paolo Carlini +// +// 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 +// . + +#include + +typedef std::shared_ptr sptype; + +static_assert(std::is_nothrow_move_constructible::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 index 00000000000..c5de14f52f4 --- /dev/null +++ b/libstdc++-v3/testsuite/20_util/unique_ptr/cons/noexcept_move_construct.cc @@ -0,0 +1,27 @@ +// { dg-do compile } +// { dg-options "-std=gnu++0x" } + +// 2011-06-14 Paolo Carlini +// +// 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 +// . + +#include + +typedef std::unique_ptr uptype; + +static_assert(std::is_nothrow_move_constructible::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 index 00000000000..4e9a90df63d --- /dev/null +++ b/libstdc++-v3/testsuite/20_util/weak_ptr/cons/noexcept_move_construct.cc @@ -0,0 +1,27 @@ +// { dg-do compile } +// { dg-options "-std=gnu++0x" } + +// 2011-06-14 Paolo Carlini +// +// 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 +// . + +#include + +typedef std::weak_ptr wptype; + +static_assert(std::is_nothrow_move_constructible::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 index 00000000000..3d7fdc382e6 --- /dev/null +++ b/libstdc++-v3/testsuite/26_numerics/valarray/noexcept_move_construct.cc @@ -0,0 +1,27 @@ +// { dg-do compile } +// { dg-options "-std=gnu++0x" } + +// 2011-06-14 Paolo Carlini +// +// 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 +// . + +#include + +typedef std::valarray vtype; + +static_assert(std::is_nothrow_move_constructible::value, "Error");