Index: test/std/utilities/tuple/tuple.tuple/tuple.assign/copy.pass.cpp =================================================================== --- test/std/utilities/tuple/tuple.tuple/tuple.assign/copy.pass.cpp +++ test/std/utilities/tuple/tuple.tuple/tuple.assign/copy.pass.cpp @@ -35,6 +35,10 @@ MoveAssignable& operator=(MoveAssignable&&) = default; }; +struct CopyAssignableInt { + CopyAssignableInt& operator=(int&) { return *this; } +}; + int main(int, char**) { { @@ -100,6 +104,21 @@ using T = std::tuple; static_assert(!std::is_copy_assignable::value, ""); } + { + using T = std::tuple; + using P = std::pair ; + static_assert(!std::is_assignable::value, ""); + } + { // test const requirement + using T = std::tuple; + using P = std::pair ; + static_assert(!std::is_assignable::value, ""); + } + { + using T = std::tuple; + using P = std::pair ; + static_assert(!std::is_assignable::value, ""); + } return 0; } Index: test/std/utilities/tuple/tuple.tuple/tuple.assign/move_pair.pass.cpp =================================================================== --- test/std/utilities/tuple/tuple.tuple/tuple.assign/move_pair.pass.cpp +++ test/std/utilities/tuple/tuple.tuple/tuple.assign/move_pair.pass.cpp @@ -37,6 +37,12 @@ explicit D(int i) : B(i) {} }; +struct NonMoveAssignable +{ + NonMoveAssignable& operator=(NonMoveAssignable const&) = default; + NonMoveAssignable& operator=(NonMoveAssignable &&) = delete; +}; + int main(int, char**) { { @@ -48,6 +54,16 @@ assert(std::get<0>(t1) == 2); assert(std::get<1>(t1)->id_ == 3); } + { + using T = std::tuple; + using P = std::pair ; + static_assert(!std::is_assignable::value, ""); + } + { + using T = std::tuple; + using P = std::pair ; + static_assert(!std::is_assignable::value, ""); + } return 0; } Index: test/std/utilities/utility/pairs/pairs.pair/assign_pair.pass.cpp =================================================================== --- test/std/utilities/utility/pairs/pairs.pair/assign_pair.pass.cpp +++ test/std/utilities/utility/pairs/pairs.pair/assign_pair.pass.cpp @@ -21,9 +21,8 @@ #include "test_macros.h" -struct NonAssignable { - NonAssignable& operator=(NonAssignable const&) = delete; - NonAssignable& operator=(NonAssignable&&) = delete; +struct NonCopyAssignable { + NonCopyAssignable& operator=(NonCopyAssignable const&) = delete; }; struct CopyAssignable { CopyAssignable() = default; @@ -73,8 +72,8 @@ assert(p1.second == y2); } { - using P = std::pair; - static_assert(!std::is_copy_assignable

::value, ""); + using P = std::pair; + static_assert(!std::is_move_assignable

::value, ""); } { CountAssign::reset(); Index: test/std/utilities/utility/pairs/pairs.pair/assign_rv_pair.pass.cpp =================================================================== --- test/std/utilities/utility/pairs/pairs.pair/assign_rv_pair.pass.cpp +++ test/std/utilities/utility/pairs/pairs.pair/assign_rv_pair.pass.cpp @@ -21,9 +21,8 @@ #include "test_macros.h" -struct NonAssignable { - NonAssignable& operator=(NonAssignable const&) = delete; - NonAssignable& operator=(NonAssignable&&) = delete; +struct NonMoveAssignable { + NonMoveAssignable& operator=(NonMoveAssignable&&) = delete; }; struct CopyAssignable { CopyAssignable() = default; @@ -70,7 +69,7 @@ assert(p1.second == y2); } { - using P = std::pair; + using P = std::pair; static_assert(!std::is_move_assignable

::value, ""); } { Index: www/cxx1z_status.html =================================================================== --- www/cxx1z_status.html +++ www/cxx1z_status.html @@ -412,7 +412,7 @@ 2699Missing restriction in [numeric.requirements]IssaquahComplete 2712copy_file(from, to, ...) has a number of unspecified error conditionsIssaquahComplete 2722equivalent incorrectly specifies throws clauseIssaquahComplete - 2729Missing SFINAE on std::pair::operator=Issaquah + 2729Missing SFINAE on std::pair::operator=IssaquahComplete 2732Questionable specification of path::operator/= and path::appendIssaquahComplete 2733[fund.ts.v2] gcd / lcm and boolIssaquahComplete 2735std::abs(short), std::abs(signed char) and others should return int instead of double in order to be compatible with C++98 and CIssaquah