https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69106
Bug ID: 69106 Summary: std::promise should tolerate overloaded & Product: gcc Version: 6.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: libstdc++ Assignee: unassigned at gcc dot gnu.org Reporter: rs2740 at gmail dot com Target Milestone: --- Test case: #include <future> struct foo { void operator&() const = delete; }; int main() { std::promise<foo> p; p.set_value(foo()); } results in: In file included from prog.cc:1:0: /usr/local/gcc-head/include/c++/6.0.0/future: In instantiation of 'static std::__future_base::_State_baseV2::_Setter<_Res, _Arg&&> std::__future_base::_State_baseV2::__setter(std::promise<_Res>*, _Arg&&) [with _Res = foo; _Arg = foo]': /usr/local/gcc-head/include/c++/6.0.0/future:1081:50: required from 'void std::promise<_Res>::set_value(_Res&&) [with _Res = foo]' prog.cc:9:22: required from here /usr/local/gcc-head/include/c++/6.0.0/future:510:49: error: use of deleted function 'void foo::operator&() const' return _Setter<_Res, _Arg&&>{ __prom, &__arg }; ^~~~~~ prog.cc:4:10: note: declared here void operator&() const = delete; ^~~~~~~~