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