C ++ 17 добавляет std::uninitialized_move
, но нет std::uninitialized_move_if_noexcept
, который бы использовал std::move_if_noexcept
для внутреннего использования.На мой взгляд, это было бы полезно, так как теперь, если мы хотим перераспределить, нам все еще нужно написать что-то как
if constexpr (!std::is_nothrow_move_constructible_v<value_type>
&& std::is_copy_constructible_v<value_type>)
std::uninitialized_copy(...);
else
std::uninitialized_move(...);
. Есть ли какие-то конкретные причины, по которым std::uninitialized_move_if_noexcept
не был введен в C ++?17?