Earlier quoted context omitted.
Adds: 1. convenience 2. attractive appearance 3. ubiquity 4. better error messages (because compiler knows what they are) 5. one construct instead of two (vector and span) 6. overflow behavior selectable with compiler switch For example: #include std::vector v; vs: int[] v; Many D users have remarked that it's the single best feature of D.
> 3. ubiquity Hardly. A std library update is often easier and faster to ship than a new compiler toolchain. Especially in C/C++ world, although it is moderately uniquely terrible in this regard > 5. one construct instead of two (vector and span) Incorrect. Vector is an owned type, while both span and your proposal are borrowed types. > 6. overflow behavior selectable with compiler switch That sounds an awful lot lik…
> It's not generally desirable for code behavior to change depending on how it's compiled, makes debugging kinda hard.
It only changes the behavior of what happens after the program has already failed. People want different behaviors, depending on their environment, and like having the choice.