Если std::span
недоступен, вы можете воспользоваться тем, что указатель является итератором C ++.
Учитывая указатель p
и размер n
, вы можете использовать пару итераторов [p
, p + n
) для построения диапазона, используя ranges::subrange
:
void print(int i) { std::cout << i << " "; }
int values[6] = {0, 1, 2, 3, 4, 5};
// Example of a pointer and a size.
const int* ptr = values;
const std::size_t n = 3;
auto r = ranges::subrange(ptr, ptr + n);
ranges::for_each(r, print); // Prints: 0, 1, 2
Рабочий пример: https://wandbox.org/permlink/eeIa96ieCb8GIQcM