@@ -504,7 +504,7 @@ struct inplace_vector : private __iv_detail::__storage::_t<__T, __N> {
504504 using const_reverse_iterator = ::std::reverse_iterator<const_iterator>;
505505
506506 // [containers.sequences.inplace_vector.cons], construct/copy/destroy
507- constexpr inplace_vector () noexcept { __unsafe_set_size ( 0 ); }
507+ constexpr inplace_vector () noexcept = default;
508508 // constexpr explicit inplace_vector(size_type __n);
509509 // constexpr inplace_vector(size_type __n, const __T& __value);
510510 // template <class __InputIterator> // BUGBUG: why not model input_iterator?
@@ -938,28 +938,35 @@ struct inplace_vector : private __iv_detail::__storage::_t<__T, __N> {
938938 __unsafe_set_size (size () - 1 );
939939 }
940940
941+ constexpr inplace_vector (const inplace_vector &__x) requires(__N == 0 ) = default;
941942 constexpr inplace_vector (const inplace_vector &__x)
942- requires(copyable<__T>)
943+ requires(__N != 0 && copyable<__T>)
943944 {
944945 for (auto &&__e : __x)
945946 emplace_back (__e);
946947 }
948+
949+ constexpr inplace_vector (inplace_vector &&__x) requires(__N == 0 ) = default;
947950 constexpr inplace_vector (inplace_vector &&__x)
948- requires(movable<__T>)
951+ requires(__N != 0 && movable<__T>)
949952 {
950953 for (auto &&__e : __x)
951954 emplace_back (::std::move (__e));
952955 }
956+
957+ constexpr inplace_vector &operator =(const inplace_vector &__x) requires (__N == 0 ) = default ;
953958 constexpr inplace_vector &operator =(const inplace_vector &__x)
954- requires (copyable<__T>)
959+ requires (__N != 0 && copyable<__T>)
955960 {
956961 clear ();
957962 for (auto &&__e : __x)
958963 emplace_back (__e);
959964 return *this ;
960965 }
966+
967+ constexpr inplace_vector &operator =(inplace_vector &&__x) requires (__N == 0 ) = default ;
961968 constexpr inplace_vector &operator =(inplace_vector &&__x)
962- requires (movable<__T>)
969+ requires (__N != 0 && movable<__T>)
963970 {
964971 clear ();
965972 for (auto &&__e : __x)
0 commit comments