Index: include/functional =================================================================== --- include/functional +++ include/functional @@ -2228,7 +2228,7 @@ function& operator=(const function&); function& operator=(function&&) _NOEXCEPT; function& operator=(nullptr_t) _NOEXCEPT; - template> + template::type&>> function& operator=(_Fp&&); ~function(); Index: test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/F_assign.pass.cpp =================================================================== --- test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/F_assign.pass.cpp +++ test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/F_assign.pass.cpp @@ -114,6 +114,25 @@ static_assert(!std::is_assignable::value, ""); static_assert(!std::is_assignable::value, ""); } + { + using Fn = std::function; + static_assert(std::is_assignable::value, ""); + } + { + using F1 = std::function; + using F2 = std::function; + static_assert(!std::is_assignable::value, ""); + } + { + using F1 = std::function; + using F2 = std::function; + static_assert(!std::is_assignable::value, ""); + } + { + using F1 = std::function; + using F2 = std::function; + static_assert(!std::is_assignable::value, ""); + } #endif return 0; Index: www/cxx1z_status.html =================================================================== --- www/cxx1z_status.html +++ www/cxx1z_status.html @@ -299,7 +299,7 @@ 2566Requirements on the first template parameter of container adaptorsJacksonvilleComplete 2571§[map.modifiers]/2 imposes nonsensical requirement on insert(InputIterator, InputIterator)JacksonvilleComplete 2572The remarks for shared_ptr::operator* should apply to cv-qualified void as wellJacksonvilleComplete - 2574[fund.ts.v2] std::experimental::function::operator=(F&&) should be constrainedJacksonville + 2574[fund.ts.v2] std::experimental::function::operator=(F&&) should be constrainedJacksonvilleComplete 2575[fund.ts.v2] experimental::function::assign should be removedJacksonville 2576istream_iterator and ostream_iterator should use std::addressofJacksonvilleComplete 2577{shared,unique}_lock should use std::addressofJacksonvilleComplete