The Standard layout mappings' operator() accept arguments that are not integers, as long as
- they are convertible to
index_type, and
index_type is nothrow-constructible from them.
See e.g., [mdspan.layout.left.obs] 2. Also, submdspan accepts as a valid slice type any argument that models convertible_to<index_type>. However, the current reference mdspan implementation cannot handle either of these cases.
I have a branch that implements D3663R2 (if you enable a CMake option MDSPAN_ENABLE_P3663 that defaults to OFF). In that branch, I have a commit that fixes this bug (also for the non-D3663R2 case). The commit also adds regression tests for both layout mapping indexing and submdspan slicing.
@youyu3 This may be relevant to your interests.