std::promise synopsis shows two set_value_at_thread_exit()'s for no apparent reasonSection: 32.10.6 [futures.promise] Status: C++17 Submitter: Tim Song Opened: 2015-07-31 Last modified: 2017-07-30
Priority: 0
View all other issues in [futures.promise].
View all issues with C++17 status.
Discussion:
In 32.10.6 [futures.promise], the class synopsis shows
void set_value_at_thread_exit(const R& r); void set_value_at_thread_exit(see below);
There's no apparent reason for having void set_value_at_thread_exit(const R& r);, especially as that
signature isn't really present in the specializations (particularly promise<void>). Note that the similar
set_value only has a void set_value(see below);
While we are here, 32.10.6 [futures.promise]/p1 says that the specializations "differ only in the argument type of the
member function set_value", which missed set_value_at_thread_exit.
[2015-10, Kona issue prioritization]
Priority 0, move to Ready
Proposed resolution:
This wording is relative to N4527.
Edit 32.10.6 [futures.promise], class template promise synopsis, as indicated:
namespace std {
template <class R>
class promise {
public:
[…]
// setting the result
void set_value(see below);
void set_exception(exception_ptr p);
// setting the result with deferred notification
void set_value_at_thread_exit(const R& r);
void set_value_at_thread_exit(see below);
void set_exception_at_thread_exit(exception_ptr p);
};
}
Edit 32.10.6 [futures.promise]/1 as indicated:
-1- The implementation shall provide the template
promiseand two specializations,promise<R&>andpromise<void>. These differ only in the argument type of the member functionsset_valueandset_value_at_thread_exit, as set out inits descriptiontheir descriptions, below.