does cast make an lvalue appear to be an rvalue
Daniel Davidson
nospam at spam.com
Wed Oct 16 11:15:53 PDT 2013
On Wednesday, 16 October 2013 at 18:09:55 UTC, Maxim Fomin wrote:
> On Wednesday, 16 October 2013 at 17:05:25 UTC, Daniel Davidson
> wrote:
>> The code below fails to compile due to the last line. I was
>> hoping casting away immutable would allow the call to foo. I
>> think it is not accepted because of the rval to ref issue. If
>> that is the case, how can foo be called by casting?
>>
>> I'm not a fan of casting but I'm finding cases where it is the
>> only recourse to create immutable data using impure functions
>> that should be pure.
>>
>> Thanks
>> Dan
>>
>> import std.conv;
>>
>> struct T {
>> int[] i;
>> string[string] ss;
>> }
>>
>> void foo(ref T t) {
>> }
>>
>> void main() {
>> T t1;
>> auto t2 = immutable T();
>> foo(t1);
>> foo(cast()t2);
>> }
>
> foo([cast()t2][0]);
>
> (It would be good to have compound literals like in C)
Haaah - brilliant. Scary, but brilliant.
More information about the Digitalmars-d-learn
mailing list