Getting on my #cplusplus bullshit for a moment.
std::span should be templated on <typename ElementType, typename ExtentType>, not <typename ElementType, std::size_t Extent>.
I should be able to customize my extent types arbitrarily.
I don’t understand how it is more complex. As long as it matches an ExtentType concept, the complexity is all the same for the implementor. It could even be a basic_span, and then span would be a basic_span<ElementType, std::default_extent<Extent>>.