At the WG21 meeting we just approved a change to replace the exposition-only constructor for future_error with a constructor taking a future_errc error code enum instead. This adds it, making the existing not-required-by-the-standard constructor private.
* include/std/future (future_error): Make existing constructor private and add constructor from future_errc. Tested powerpc64le-linux, committed to trunk.
commit c1d04bfe22e29dd047aeecce379154e75ee31eb3 Author: Jonathan Wakely <jwak...@redhat.com> Date: Sat Nov 12 03:27:16 2016 +0000 Add std::future_error constructor from future_errc * include/std/future (future_error): Make existing constructor private and add constructor from future_errc. diff --git a/libstdc++-v3/include/std/future b/libstdc++-v3/include/std/future index fea915b..4d125e8 100644 --- a/libstdc++-v3/include/std/future +++ b/libstdc++-v3/include/std/future @@ -95,11 +95,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION */ class future_error : public logic_error { - error_code _M_code; - public: - explicit future_error(error_code __ec) - : logic_error("std::future_error: " + __ec.message()), _M_code(__ec) + explicit + future_error(future_errc __errc) + : future_error(std::make_error_code(__errc)) { } virtual ~future_error() noexcept; @@ -109,6 +108,16 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION const error_code& code() const noexcept { return _M_code; } + + public: + explicit + future_error(error_code __ec) + : logic_error("std::future_error: " + __ec.message()), _M_code(__ec) + { } + + friend void __throw_future_error(int); + + error_code _M_code; }; // Forward declarations. @@ -426,8 +435,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION { if (static_cast<bool>(__res)) { - error_code __ec(make_error_code(future_errc::broken_promise)); - __res->_M_error = make_exception_ptr(future_error(__ec)); + __res->_M_error = + make_exception_ptr(future_error(future_errc::broken_promise)); // This function is only called when the last asynchronous result // provider is abandoning this shared state, so noone can be // trying to make the shared state ready at the same time, and