std::span — getting rid of pointer and size
C++ does not support passing around variably sized arrays by value. The closest is to pass std::vector<T>. But you don't always have your data in the exact std::vector<T> chunks to make that a viable interface. So instead, we pass a pointer to the start of the array and an integer to tell the function how many elements after the pointer are valid array accesses. Example: you have a vector<int> data and want to pass the elements from index n to n+16 to a function. std::span abstracts this use case and integrates more or less into the APIs of the C++ standard library.
Edited by Matthias Kretz