shared immutable issues
Enerqi
kelvin.d.ward at googlemail.com
Mon Jul 23 10:21:31 PDT 2012
Hi
I'm wondering what the state of the language/libraries are with
regard to shared/immutable qualifiers. I've tried to use
std.concurrency and had a lot of compile issues passing shared
data around.
Even a simple case I'm finding issue with:
---------
import std.array;
int main(string[] argv)
{
shared uint[] arr = stuffone();
return 0;
}
shared uint[] stuffone()
{
shared uint[] arr = new shared (uint[1]);
arr[0] = 1;
return cast(shared)arr;
}
---------
Compile error:
shared.d(6): Error: cannot implicitly convert expression
(stuffone()) of type uint[] to shared(uint[])
shared.d(15): Error: cannot implicitly convert expression (arr)
of type shared(uint[]) to uint[]
Another case I couldn't construct an appender to shared data:
---------
import std.array;
int main(string[] argv)
{
Appender!(shared uint[]) app = std.array.appender!(shared
uint[]);
return 0;
}
---------
Compile error:
Error: incompatible types for ((cast(shared(uint)*)arr) is
(cast(uint*)(*this._data).arr)): 'shared(uint)*' and 'uint*'
shared.d(6): Error: template instance
std.array.Appender!(shared(uint[])) error instantiating
shared.d(6): Error: constructor
std.array.Appender!(shared(uint[])).Appender.this (shared(uint)[]
arr) is not callable using argument types
(Appender!(shared(uint)[]))
shared.d(6): Error: cannot implicitly convert expression
(appender(null)) of type Appender!(shared(uint)[]) to
shared(uint)[]
std\array.d(1878): Error: incompatible types for
((cast(shared(uint)*)arr) is (cast(uint*)(*this._data).arr)):
'shared(uint)*' and 'uint*'
Not sure if I'm missing something obvious.
Thanks.
More information about the Digitalmars-d-learn
mailing list