From 4bbfc438d1b52d543444f2d58b6829525890dbba Mon Sep 17 00:00:00 2001 From: RazvanN7 Date: Wed, 16 Aug 2017 14:58:57 +0300 Subject: [PATCH] std.array.array cannot be instantiated for pointers to ranges --- std/array.d | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/std/array.d b/std/array.d index f05fc35665a..97b63852773 100644 --- a/std/array.d +++ b/std/array.d @@ -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) { @@ -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