The C++20 std::shift_left and std::shift_right algorithms move elements in the provided range by the specified offset.
Both algorithms internally move, meaning we can simulate these algorithms manually by calling the std::move algorithm with the appropriate source and offset destination.
Both algorithms have parallel (C++20) and range (C++23) versions.
Compiler Explorer link: https://compiler-explorer.com/z/4rer4o945