[dmd 2.066-b1] std.range.array with shared objects and AA rehash
NCrashed via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Tue Jul 8 07:08:52 PDT 2014
On Tuesday, 8 July 2014 at 13:07:57 UTC, Meta wrote:
> On Tuesday, 8 July 2014 at 12:42:44 UTC, NCrashed wrote:
>> Oops, I forgot shared at new. But the major issue is that
>> doesn't fix the problem:
>> ```
>> import std.range;
>>
>> class A {}
>>
>> InputRange!(shared A) foo()
>> {
>> return [new shared A].inputRangeObject;
>> }
>>
>> void bar()
>> {
>> auto res = foo.array;
>> }
>>
>> void main() {}
>> ```
>> Output:
>> ```
>> /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)))
>> ```
>
> Hmmm, it worked when I compiled it on Dpaste, so you must be
> using a different compiler. There were some changes to shared
> in the current 2.066 beta, so that may be the cause. Somebody
> more experienced with shared than me will have to answer.
I appreciate you help, the error smells like a bug. That compiles
on dmd 2.065, but I am testing new dmd 2.066-b1 to not suddenly
get dozens of such errors when it becomes a release.
More information about the Digitalmars-d-learn
mailing list