| 123 | template <typename Container, |
| 124 | typename T = typename Container::value_type> |
| 125 | Container extrapolate_wrap(std::size_t count_begin, std::size_t count_end, |
| 126 | const Container& xs) |
| 127 | { |
| 128 | assert(is_not_empty(xs)); |
| 129 | Container ys; |
| 130 | const auto xs_size = size_of_cont(xs); |
| 131 | internal::prepare_container(ys, xs_size + count_begin + count_end); |
| 132 | auto it = internal::get_back_inserter(ys); |
| 133 | const signed int idx_end = static_cast<signed int>(xs_size + count_end); |
| 134 | const signed int idx_start = -static_cast<signed int>(count_begin); |
| 135 | for (signed int idx = idx_start; idx < idx_end; ++idx) { |
| 136 | *it = elem_at_idx_or_wrap(idx, xs); |
| 137 | } |
| 138 | return ys; |
| 139 | } |
| 140 | |
| 141 | } // namespace fplus |
no test coverage detected