Index: libcxx/include/future =================================================================== --- libcxx/include/future +++ libcxx/include/future @@ -2126,10 +2126,10 @@ __p_ = promise(); } -template +template inline _LIBCPP_INLINE_VISIBILITY void -swap(packaged_task<_Callable>& __x, packaged_task<_Callable>& __y) _NOEXCEPT +swap(packaged_task<_Rp(_ArgTypes...)>& __x, packaged_task<_Rp(_ArgTypes...)>& __y) _NOEXCEPT { __x.swap(__y); } Index: libcxx/test/std/thread/futures/futures.task/futures.task.nonmembers/swap.pass.cpp =================================================================== --- libcxx/test/std/thread/futures/futures.task/futures.task.nonmembers/swap.pass.cpp +++ libcxx/test/std/thread/futures/futures.task/futures.task.nonmembers/swap.pass.cpp @@ -51,6 +51,13 @@ assert(!p0.valid()); assert(!p.valid()); } + { + std::packaged_task p0; + std::packaged_task p; + swap(p, p0); + assert(!p0.valid()); + assert(!p.valid()); + } return 0; }