Hear me out... ;) Using empty seems to be emerging as the recommended practice for testing whether an array is empty. And that makes sense as it's consistent with other ranges. I'm all in favor of that.
But I've found myself avoiding empty (and instead doing arr=="" or checking the .length) just because empty doesn't work on arrays unless you've already imported std.array (unless my knowledge is out-of-date, which is possible considering how fast things are moving ;) ). So doing "arr.empty" is a little messy and increases my cognitive load, whereas arr=="", arr==[], and arr.length == 0, "just work". Considering that: 1. Arrays are (from the user's perspective) a built-in type that doesn't need to be explicitly imported. 2. Calling 'empty' is (for good reason) the recommended standard practice for checking if arrays are empty. ...Perhaps it would make sense for empty(T)(T[] a) to be moved into object.d, or at least somewhere it will always be implicitly included? Being a standard part of arrays and input ranges already effectively elevates "empty" to a relatively special status anyway.