For context, I'm trying to make a span type that has a size type parameter, which mimics much of the std::span api.
std::dynamic_extent is not zero in C++, instead being defined as -1ull or std::numeric_limits<std::size_t>::max(). when the Extent ntt parameter of a std::span is std::dynamic_extent, a size member variable of some description is created.  But when it isn't, the compile time value for the Extent parameter is used directly for the size instead.
I'm trying to understand why this decision was made, but more importantly, are there any tradeoffs with using 0 instead of max value here?