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
This commit is contained in:
parent
77bce07cce
commit
ec98d01014
10 changed files with 39 additions and 19 deletions
|
@ -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.
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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) );
|
||||
|
|
|
@ -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 );
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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
|
||||
{
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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();
|
||||
|
|
Loading…
Add table
Reference in a new issue