On Jan 8, 2022, at 9:46 PM, Helmut Zeisel via Boost
Von: "Ivan Matek"
On Fri, Jan 7, 2022 at 8:16 AM Helmut Zeisel via Boost wrote: 1) boost::multi_array_ref does not own the memory (which creates at least the memory overhead of one pointer) AFAIK boost::multi_array (no _ref suffix) owns memory, but it still does 1 heap allocation.
Yes.
What I have in mind, however, (as I mentioned already ealier) is some general adapter class
template
struct array_index_adapter { ... }; that can apply different types of indices (row major, column major, triangular ...) to different containers (stack allocated, heap allocated, mixed like boost::small_vector etc).
You should look at mdspan, then. It’s been in use at various national labs for many years, and is being proposed for a future standard. A reference implementation is here: https://github.com/kokkos/mdspan — Marshall