libstdc++: Simplify constraints for semiregular-box [LWG 3477]
authorJonathan Wakely <jwakely@redhat.com>
Mon, 7 Sep 2020 19:09:17 +0000 (20:09 +0100)
committerJonathan Wakely <jwakely@redhat.com>
Mon, 7 Sep 2020 19:09:17 +0000 (20:09 +0100)
libstdc++-v3/ChangeLog:

* include/std/ranges (__box): Simplify constraints as per LWG 3477.

libstdc++-v3/include/std/ranges

index 054ffe85d0f627b1a4cd164578d518fd5d1c218d..23a04d61174354f63cfe6b5583050a9ed2848211 100644 (file)
@@ -494,10 +494,12 @@ namespace ranges
 
        using std::optional<_Tp>::operator=;
 
+       // _GLIBCXX_RESOLVE_LIB_DEFECTS
+       // 3477. Simplify constraints for semiregular-box
        __box&
        operator=(const __box& __that)
        noexcept(is_nothrow_copy_constructible_v<_Tp>)
-       requires (!assignable_from<_Tp&, const _Tp&>)
+       requires (!copyable<_Tp>)
        {
          if ((bool)__that)
            this->emplace(*__that);
@@ -509,7 +511,7 @@ namespace ranges
        __box&
        operator=(__box&& __that)
        noexcept(is_nothrow_move_constructible_v<_Tp>)
-       requires (!assignable_from<_Tp&, _Tp>)
+       requires (!movable<_Tp>)
        {
          if ((bool)__that)
            this->emplace(std::move(*__that));