diff options
author | Jonathan Wakely <jwakely.gcc@gmail.com> | 2013-04-24 22:00:16 +0000 |
---|---|---|
committer | Jonathan Wakely <redi@gcc.gnu.org> | 2013-04-24 23:00:16 +0100 |
commit | ec98d01014c53501f9bf03b57ee1952233b45c60 (patch) | |
tree | e2f44526ebfdbc4e96f7cc71152db007247579d7 | |
parent | 77bce07cce1eee85627b0deb61f3ecf6e0da461f (diff) | |
download | gcc-ec98d01014c53501f9bf03b57ee1952233b45c60.zip gcc-ec98d01014c53501f9bf03b57ee1952233b45c60.tar.gz gcc-ec98d01014c53501f9bf03b57ee1952233b45c60.tar.bz2 |
re PR libstdc++/56905 ([C++11][DR 1130] std::copy_exception should be removed or no longer be used)
PR libstdc++/56905
* libsupc++/exception_ptr.h (copy_exception): Deprecate and
move implementation to make_exception_ptr.
* include/std/future (_State_base::_M_break_promise): Replace
copy_exception with make_exception_ptr.
* testsuite/18_support/exception_ptr/move.cc: Likewise.
* testsuite/18_support/exception_ptr/rethrow_exception.cc: Likewise.
* testsuite/30_threads/future/members/get2.cc: Likewise.
* testsuite/30_threads/promise/members/set_exception.cc: Likewise.
* testsuite/30_threads/promise/members/set_exception2.cc: Likewise.
* testsuite/30_threads/promise/members/set_value2.cc: Likewise.
* testsuite/30_threads/shared_future/members/get2.cc: Likewise.
From-SVN: r198265
10 files changed, 39 insertions, 19 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 9a966b0..b8c6f28 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,18 @@ +2013-04-11 Jonathan Wakely <jwakely.gcc@gmail.com> + + PR libstdc++/56905 + * libsupc++/exception_ptr.h (copy_exception): Deprecate and + move implementation to make_exception_ptr. + * include/std/future (_State_base::_M_break_promise): Replace + copy_exception with make_exception_ptr. + * testsuite/18_support/exception_ptr/move.cc: Likewise. + * testsuite/18_support/exception_ptr/rethrow_exception.cc: Likewise. + * testsuite/30_threads/future/members/get2.cc: Likewise. + * testsuite/30_threads/promise/members/set_exception.cc: Likewise. + * testsuite/30_threads/promise/members/set_exception2.cc: Likewise. + * testsuite/30_threads/promise/members/set_value2.cc: Likewise. + * testsuite/30_threads/shared_future/members/get2.cc: Likewise. + 2013-04-22 Jason Merrill <jason@redhat.com> * src/c++11/hashtable_c++0x.cc: Include ext/aligned_buffer.h. diff --git a/libstdc++-v3/include/std/future b/libstdc++-v3/include/std/future index a86a7ca..6d6b32b 100644 --- a/libstdc++-v3/include/std/future +++ b/libstdc++-v3/include/std/future @@ -361,7 +361,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION if (static_cast<bool>(__res)) { error_code __ec(make_error_code(future_errc::broken_promise)); - __res->_M_error = copy_exception(future_error(__ec)); + __res->_M_error = make_exception_ptr(future_error(__ec)); { lock_guard<mutex> __lock(_M_mutex); _M_result.swap(__res); diff --git a/libstdc++-v3/libsupc++/exception_ptr.h b/libstdc++-v3/libsupc++/exception_ptr.h index bbf8f85..effab347 100644 --- a/libstdc++-v3/libsupc++/exception_ptr.h +++ b/libstdc++-v3/libsupc++/exception_ptr.h @@ -166,7 +166,7 @@ namespace std /// Obtain an exception_ptr pointing to a copy of the supplied object. template<typename _Ex> exception_ptr - copy_exception(_Ex __ex) _GLIBCXX_USE_NOEXCEPT + make_exception_ptr(_Ex __ex) _GLIBCXX_USE_NOEXCEPT { __try { @@ -183,10 +183,15 @@ namespace std // _GLIBCXX_RESOLVE_LIB_DEFECTS // 1130. copy_exception name misleading /// Obtain an exception_ptr pointing to a copy of the supplied object. + /// This function is deprecated, use std::make_exception_ptr instead. template<typename _Ex> - exception_ptr - make_exception_ptr(_Ex __ex) _GLIBCXX_USE_NOEXCEPT - { return std::copy_exception<_Ex>(__ex); } + exception_ptr + copy_exception(_Ex __ex) _GLIBCXX_USE_NOEXCEPT _GLIBCXX_DEPRECATED; + + template<typename _Ex> + exception_ptr + copy_exception(_Ex __ex) _GLIBCXX_USE_NOEXCEPT + { return std::make_exception_ptr<_Ex>(__ex); } // @} group exceptions } // namespace std diff --git a/libstdc++-v3/testsuite/18_support/exception_ptr/move.cc b/libstdc++-v3/testsuite/18_support/exception_ptr/move.cc index 2b7284d..9c3df1e 100644 --- a/libstdc++-v3/testsuite/18_support/exception_ptr/move.cc +++ b/libstdc++-v3/testsuite/18_support/exception_ptr/move.cc @@ -28,7 +28,7 @@ void test01() { bool test = true; - std::exception_ptr p1 = std::copy_exception(test); + std::exception_ptr p1 = std::make_exception_ptr(test); std::exception_ptr p2 = std::move(p1); VERIFY( p1 == 0 ); VERIFY( !(p2 == 0) ); diff --git a/libstdc++-v3/testsuite/18_support/exception_ptr/rethrow_exception.cc b/libstdc++-v3/testsuite/18_support/exception_ptr/rethrow_exception.cc index 430913c..39a57fe 100644 --- a/libstdc++-v3/testsuite/18_support/exception_ptr/rethrow_exception.cc +++ b/libstdc++-v3/testsuite/18_support/exception_ptr/rethrow_exception.cc @@ -34,7 +34,7 @@ void test01() using namespace std; try { - rethrow_exception(copy_exception(0)); + rethrow_exception(make_exception_ptr(0)); } catch(...) { } } @@ -45,7 +45,7 @@ void test02() using namespace std; try { - rethrow_exception(copy_exception(runtime_error("test"))); + rethrow_exception(make_exception_ptr(runtime_error("test"))); } catch(exception &e) { VERIFY( typeid(e) == typeid(runtime_error) ); VERIFY( strcmp(e.what(), "test") == 0 ); diff --git a/libstdc++-v3/testsuite/30_threads/future/members/get2.cc b/libstdc++-v3/testsuite/30_threads/future/members/get2.cc index b74c84d..2f05240 100644 --- a/libstdc++-v3/testsuite/30_threads/future/members/get2.cc +++ b/libstdc++-v3/testsuite/30_threads/future/members/get2.cc @@ -37,7 +37,7 @@ void test01() std::promise<int> p1; std::future<int> f1(p1.get_future()); - p1.set_exception(std::copy_exception(value)); + p1.set_exception(std::make_exception_ptr(value)); try { (void) f1.get(); @@ -57,7 +57,7 @@ void test02() std::promise<int&> p1; std::future<int&> f1(p1.get_future()); - p1.set_exception(std::copy_exception(value)); + p1.set_exception(std::make_exception_ptr(value)); try { (void) f1.get(); @@ -77,7 +77,7 @@ void test03() std::promise<void> p1; std::future<void> f1(p1.get_future()); - p1.set_exception(std::copy_exception(value)); + p1.set_exception(std::make_exception_ptr(value)); try { f1.get(); diff --git a/libstdc++-v3/testsuite/30_threads/promise/members/set_exception.cc b/libstdc++-v3/testsuite/30_threads/promise/members/set_exception.cc index c7f1df2..920c116 100644 --- a/libstdc++-v3/testsuite/30_threads/promise/members/set_exception.cc +++ b/libstdc++-v3/testsuite/30_threads/promise/members/set_exception.cc @@ -36,7 +36,7 @@ void test01() VERIFY( f1.valid() ); - p1.set_exception(std::copy_exception(0)); + p1.set_exception(std::make_exception_ptr(0)); try { diff --git a/libstdc++-v3/testsuite/30_threads/promise/members/set_exception2.cc b/libstdc++-v3/testsuite/30_threads/promise/members/set_exception2.cc index 527cfbb..84c26d6 100644 --- a/libstdc++-v3/testsuite/30_threads/promise/members/set_exception2.cc +++ b/libstdc++-v3/testsuite/30_threads/promise/members/set_exception2.cc @@ -34,11 +34,11 @@ void test01() std::promise<int> p1; std::future<int> f1 = p1.get_future(); - p1.set_exception(std::copy_exception(0)); + p1.set_exception(std::make_exception_ptr(0)); try { - p1.set_exception(std::copy_exception(1)); + p1.set_exception(std::make_exception_ptr(1)); VERIFY( false ); } catch (std::future_error& e) @@ -72,7 +72,7 @@ void test02() try { - p1.set_exception(std::copy_exception(0)); + p1.set_exception(std::make_exception_ptr(0)); VERIFY( false ); } catch (std::future_error& e) diff --git a/libstdc++-v3/testsuite/30_threads/promise/members/set_value2.cc b/libstdc++-v3/testsuite/30_threads/promise/members/set_value2.cc index fcba745..2ee5987 100644 --- a/libstdc++-v3/testsuite/30_threads/promise/members/set_value2.cc +++ b/libstdc++-v3/testsuite/30_threads/promise/members/set_value2.cc @@ -65,7 +65,7 @@ void test02() try { - p1.set_exception(std::copy_exception(4)); + p1.set_exception(std::make_exception_ptr(4)); VERIFY( false ); } catch (std::future_error& e) diff --git a/libstdc++-v3/testsuite/30_threads/shared_future/members/get2.cc b/libstdc++-v3/testsuite/30_threads/shared_future/members/get2.cc index 1b8ccea..2fed6d5 100644 --- a/libstdc++-v3/testsuite/30_threads/shared_future/members/get2.cc +++ b/libstdc++-v3/testsuite/30_threads/shared_future/members/get2.cc @@ -38,7 +38,7 @@ void test01() std::shared_future<int> f1(p1.get_future()); std::shared_future<int> f2(f1); - p1.set_exception(std::copy_exception(value)); + p1.set_exception(std::make_exception_ptr(value)); try { (void) f1.get(); @@ -67,7 +67,7 @@ void test02() std::shared_future<int&> f1(p1.get_future()); std::shared_future<int&> f2(f1); - p1.set_exception(std::copy_exception(value)); + p1.set_exception(std::make_exception_ptr(value)); try { (void) f1.get(); @@ -96,7 +96,7 @@ void test03() std::shared_future<void> f1(p1.get_future()); std::shared_future<void> f2(f1); - p1.set_exception(std::copy_exception(value)); + p1.set_exception(std::make_exception_ptr(value)); try { f1.get(); |