Skip to content

Commit 35a4da4

Browse files
committed
fix array and rcarray
1 parent 7c62b7c commit 35a4da4

File tree

2 files changed

+4
-3
lines changed

2 files changed

+4
-3
lines changed

source/mir/array/allocation.d

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ import std.range.primitives: isInfinite, isInputRange, ElementType;
4040
* allocated and initialized array
4141
*/
4242
auto array(Range)(Range r)
43-
if ((isInputRange!Range || isIterable!Range) && !isInfinite!Range && !isStaticArray!Range || isPointer!Range && isIterable!(PointerTarget!Range))
43+
if ((isInputRange!Range || isIterable!Range) && !isInfinite!Range && !isStaticArray!Range || isPointer!Range && (isInputRange!(PointerTarget!Range) || isIterable!(PointerTarget!Range)))
4444
{
4545
static if (isIterable!Range)
4646
alias E = ForeachType!Range;

source/mir/rc/array.d

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -281,6 +281,8 @@ RCArray!V rcarray(T = void, V)(scope V[] values, bool deallocate)
281281
template rcarray(T)
282282
if(!is(T == E[], E) && !is(T == void))
283283
{
284+
import std.range.primitives: isInputRange, isInfinite;
285+
284286
///
285287
auto rcarray(Range)(ref Range range)
286288
if (!is(Range == LightScopeOf!Range))
@@ -290,9 +292,8 @@ template rcarray(T)
290292

291293
/// ditto
292294
auto rcarray(Range)(Range range)
293-
if (isIterable!Range && is(Range == LightScopeOf!Range) && !isArray!Range)
295+
if ((isInputRange!Range || isIterable!Range) && !isInfinite!Range && !isArray!Range || isPointer!Range && (isInputRange!(PointerTarget!Range) || isIterable!(PointerTarget!Range)))
294296
{
295-
import std.range.primitives: isInputRange;
296297
static if (LikeArray!Range)
297298
{
298299
return .rcarray!T(range.field);

0 commit comments

Comments
 (0)