"inline" conversion of array to immutable

Jeff Thompson via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Fri Apr 22 04:07:47 PDT 2016


On Friday, 22 April 2016 at 09:40:14 UTC, FreeSlave wrote:
> On Friday, 22 April 2016 at 09:25:32 UTC, Jeff Thompson wrote:
>> Hello. The following code compiles OK where func creates a 
>> mutable array and main assigns it to an immutable variable:
>>
>> [...]
>
> Probably this is what you look for 
> http://dlang.org/phobos/std_exception.html#.assumeUnique

OK, we lose the compiler check for correctness. What if I put 
func directly in main with the hopes that the compiler will check 
correctness and also inline the function? But it won't assign to 
the immutable array. Why not? It's the same function.

void main(string[] args) {
   int[] func(int x) pure {
     int[] result = new int[10];
     result[0] = x;
     return result;
   }
   immutable int[] array = func(1);
}



More information about the Digitalmars-d-learn mailing list