Why do I get this error when casting to an immutable or shared byRef return type?
Gary Willoughby via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Sun Jun 19 03:35:59 PDT 2016
In the following code, the `foo` function doesn't work when
casting to an immutable or shared type. Can anyone please explain
what is happening here? Is there any way of returning such
variables byRef from a malloc'd chunk of memory?
import core.stdc.stdlib;
ref T foo(T)()
{
int* foo = cast(int*) malloc(int.sizeof * 8);
return *foo;
}
void main(string[] args)
{
// Works!
auto bar = foo!(int)();
// Works!
auto bar = foo!(const(int))();
// Error: cast(immutable(int))*foo is not an lvalue
auto bar = foo!(immutable(int))();
// Error: cast(shared(int))*foo is not an lvalue
auto bar = foo!(shared(int))();
}
More information about the Digitalmars-d-learn
mailing list