On Wednesday, 10 June 2020 at 21:41:54 UTC, H. S. Teoh wrote:
There are a few places where it's needed (like satisfying the range API, which implicitly checks for it)
That may have been true at one point, but it isn't true now: struct S { bool empty() { return false; } int front() { return 0; } void popFront() {} } static assert(isInputRange!S); // passes