if constexpr (is_trivially_default_constructible_v<_It>)
_M_it = std::move(__x._M_it);
else
- ::new((void*)std::__addressof(_M_it)) _It(__x._M_it);
+ std::construct_at(std::__addressof(_M_it), __x._M_it);
}
else if (_M_index == 1)
{
if constexpr (is_trivially_default_constructible_v<_Sent>)
_M_sent = std::move(__x._M_sent);
else
- ::new((void*)std::__addressof(_M_sent)) _Sent(__x._M_sent);
+ std::construct_at(std::__addressof(_M_sent), __x._M_sent);
}
}
if constexpr (is_trivially_default_constructible_v<_It>)
_M_it = std::move(__x._M_it);
else
- ::new((void*)std::__addressof(_M_it)) _It(__x._M_it);
+ std::construct_at(std::__addressof(_M_it), __x._M_it);
}
else if (_M_index == 1)
{
if constexpr (is_trivially_default_constructible_v<_Sent>)
_M_sent = std::move(__x._M_sent);
else
- ::new((void*)std::__addressof(_M_sent)) _Sent(__x._M_sent);
+ std::construct_at(std::__addressof(_M_sent), __x._M_sent);
}
}
VERIFY( x.i == 2 );
}
+constexpr bool
+test_pr103992()
+{
+ using C1 = std::common_iterator<std::reverse_iterator<int*>,
+ std::unreachable_sentinel_t>;
+ using C2 = std::common_iterator<std::reverse_iterator<const int*>,
+ std::unreachable_sentinel_t>;
+ C1 c1;
+ C2 c2 = c1;
+ C1 c3 = c1;
+
+ return true;
+}
+
+static_assert( test_pr103992() );
+
int
main()
{