Enum member isInfinite

Determines whether R is an infinite range.

enum isInfinite(R) = R.empty == false;

An infinite range is an input range whose empty member is defined as enum which is always false.

Parameters

NameDescription
R A type.

Returns

true if R is an infinite range, false otherwise.

Example

static assert(!isInfinite!int);

static struct NotRange
{
    enum bool empty = false;
}
static assert(!isInfinite!NotRange);

static struct InfiniteRange
{
    void popFront() @nogc nothrow pure @safe
    {
    }
    @property int front() @nogc nothrow pure @safe
    {
        return 0;
    }
    enum bool empty = false;
}
static assert(isInfinite!InfiniteRange);

static struct InputRange
{
    void popFront() @nogc nothrow pure @safe
    {
    }
    @property int front() @nogc nothrow pure @safe
    {
        return 0;
    }
    @property bool empty() const @nogc nothrow pure @safe
    {
        return false;
    }
}
static assert(!isInfinite!InputRange);