https://issues.dlang.org/show_bug.cgi?id=23243
Issue ID: 23243
Summary: std.range.isInfinite should accept ranges with
non-static empty methods
Product: D
Version: D2
Hardware: All
OS: All
Status: NEW
Severity: enhancement
Priority: P1
Component: phobos
Assignee: [email protected]
Reporter: [email protected]
As of DMD 2.100.0, the following program fails to compile:
---
import std.range.primitives;
struct R
{
int front() { return 42; }
bool empty() { return false; }
void popFront() {}
}
static assert(isInputRange!R); // ok
enum e = R().empty; // ok
static assert(isInfinite!R); // fails
---
Since R is an input range whose .empty property evaluates to false at compile
time, it should be accepted as an infinite range.
This issue blocks issue 23242.
--