https://issues.dlang.org/show_bug.cgi?id=13077

          Issue ID: 13077
           Summary: [dmd 2.066-b2] std.range.array with shared
                    InputRangeObject
           Product: D
           Version: D2
          Hardware: x86_64
                OS: Linux
            Status: NEW
          Severity: regression
          Priority: P1
         Component: DMD
          Assignee: nob...@puremagic.com
          Reporter: ncras...@gmail.com

DMD: 2.066.0-b2
Platform: 3.14.9-200.fc20.x86_64

```
import std.range;

class A {}

InputRange!(shared A) foo()
{
    return [new shared A].inputRangeObject;
}

void bar()
{
    auto res = foo.array;
}

void main() {}
```

Compile-time error:
```
/usr/include/dmd/phobos/std/conv.d(3914): Error: cannot implicitly convert
expression (arg) of type shared(A) to app.A
/usr/include/dmd/phobos/std/array.d(2476): Error: template instance
std.conv.emplaceRef!(shared(A)).emplaceRef!(shared(A)) error instantiating
/usr/include/dmd/phobos/std/array.d(64):        instantiated from here:
put!(shared(A))
source/app.d(12):        instantiated from here: array!(InputRange!(shared(A)))
```

--

Reply via email to