Because most ranges are not containers, and only have `size_t length()`. Containers, on the other hand, have `void length(size_t desired)`. I *think* `alias opDollar = length;` would work correctly in this context, but it *could* have some weird edge cases... On the other hand, I am 100% confident that re-writing `opDollar` is correct 100% of the time.