[dmd 2.066-b1] std.range.array with shared objects and AA rehash

Meta via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Tue Jul 8 06:07:56 PDT 2014


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.


More information about the Digitalmars-d-learn mailing list