Closed apolukhin closed 3 years ago
AlexanderFadeev, 5 июля 2018, 14:48 С такими названиями будет происходить путаница с std::move
Саша Зайцев, 6 июля 2018, 15:42 Я против, так как из названия не понятно, что оно делает. А std::shift_куда сразу понятно, что мы будем делать.
И что-то мне вспоминается, что такой вариант предлагали уже в обсуждении в гуглогруппах.
C++20 случился, менять уже что-либо поздно
Перенос предложения: голоса +1, -1 Автор идеи: Олег Фатхиев
В 20 стандарт собираются добавить функции std::shift_left и std::shift_right, которые делают практически то же самое, что и std::move и std::move_backward за исключением того, что в качестве параметра для сдвига они принимают количество позиций, на которые нужно сделать сдвиг, а не итератор. Выглядит схоже с функциями вроде std::generate_n, и тд., которые также принимают количество, а не итератор.
Как известно, у многих алгоритмов в c++ есть версии с суфиксом "_n", которые означают, что в качестве индикации прекращения выполнения нужно руководствоваться количеством действий, а не итератором, до которого эти действия выполнять. В с++20 собираются ввести функции std::shift_left и std::shift_right. Само их наличие обосновано и, если бы эти функции существовали уже давно, не было бы никаких претенция. Но, как уже было сказано, есть функции с префиксом "_n". Предлагаю переименовать функции std::shift_left и std::shift_right в std::move_n и std::move_backward_n, которые бы имели такую же сигнатуру