fix some UB
[xonotic/gmqcc.git] / algo.h
1 #ifndef GMQCC_ALGO_HDR
2 #define GMQCC_ALGO_HDR
3
4 namespace algo {
5
6 template<typename ITER>
7 void shiftback(ITER element, ITER end) {
8     //typename ITER::value_type backup(move(*element)); // hold the element
9     typename std::remove_reference<decltype(*element)>::type backup(move(*element)); // hold the element
10     ITER p = element++;
11     for (; element != end; p = element++)
12         *p = move(*element);
13     *p = move(backup);
14 }
15
16 } // ::algo
17
18 #endif