I think your should check only `is(typeof(r.empty) : bool`: Else, the template becomes useless, as it doesn't tell you if you can actually call `if (e.empty)` or not (error: not a property empty).

Note that `isInputRange`, for example, will return false if your `empty` is not an attribute or property, and you have the `-property` switch. So should this.

I'd also document it as "has an $(D empty) attribute or property".