4#ifndef TETL_ALGORITHM_SHIFT_RIGHT_HPP
5#define TETL_ALGORITHM_SHIFT_RIGHT_HPP
7#include <etl/_algorithm/move.hpp>
8#include <etl/_concepts/emulation.hpp>
9#include <etl/_iterator/distance.hpp>
10#include <etl/_iterator/iterator_traits.hpp>
11#include <etl/_iterator/next.hpp>
12#include <etl/_iterator/prev.hpp>
30template <
typename BidiIt>
36 if (n <= 0
or n >=
etl::distance(first, last)) {
40 auto dest =
etl::prev(last);
41 auto src =
etl::prev(dest, n);
42 for (; src != first; --dest, (
void)--src) {
43 *dest =
etl::move(*src);
49 if constexpr (is_default_constructible_v<value_type>) {
50 for (; dest != first; --dest) {
55 return etl::next(first, n);
constexpr auto shift_right(BidiIt first, BidiIt last, typename etl::iterator_traits< BidiIt >::difference_type n) -> BidiIt
Shifts the elements in the range [first, last) by n positions.
Definition shift_right.hpp:31
Definition adjacent_find.hpp:9
iterator_traits is the type trait class that provides uniform interface to the properties of LegacyIt...
Definition iterator_traits.hpp:48