Skip to content

Commit

Permalink
std.array.array cannot be instantiated for pointers to ranges
Browse files Browse the repository at this point in the history
  • Loading branch information
RazvanN7 committed Aug 22, 2017
1 parent eadf51a commit 4bbfc43
Showing 1 changed file with 10 additions and 2 deletions.
12 changes: 10 additions & 2 deletions std/array.d
Expand Up @@ -139,7 +139,7 @@ if (isIterable!Range && !isNarrowString!Range && !isInfinite!Range)
}
}

///
/// ditto
ForeachType!(PointerTarget!Range)[] array(Range)(Range r)
if (isPointer!Range && isIterable!(PointerTarget!Range) && !isNarrowString!Range && !isInfinite!Range)
{
Expand Down Expand Up @@ -173,7 +173,15 @@ if (isPointer!Range && isIterable!(PointerTarget!Range) && !isNarrowString!Range
void popFront() {}
}

static assert(__traits(compiles, (new MyRange).array));
auto arr = (new MyRange).array;
assert(arr.empty);
}

@system pure nothrow unittest
{
immutable int[] a = [1, 2, 3, 4];
auto b = (&a).array;
assert(b == a);
}

@system unittest
Expand Down

0 comments on commit 4bbfc43

Please sign in to comment.