On Saturday, 18 October 2014 at 06:43:28 UTC, Marco Leise wrote:
Am Fri, 17 Oct 2014 17:25:46 +0000
schrieb "monarch_dodra" <monarchdo...@gmail.com>:

But maybe this answers your question?

import std.stdio;

struct S
{
     int* p;
     this(this)
     {
         ++*p;
     }
}

void main()
{
     immutable i = 0;
     auto s1 = immutable(S)(&i);
     auto s2 = s1;
     assert(*&i == 0);
}

Consider that when passing a variable you can always remove
top level const-ness because a copy is made. This holds for
returns, parameters, assignments, ...
Post-blit is no different. The issue as I see it, is that D
doesn't have strong support for this notion of head-mutable or

D has it for primitives, such as pointers, slices...

else it would work with this type during post-blit:

struct S
{
     immutable(int)* p;
     this(this)
     {
         ++*p;
     }
}

Unsure how that's relevant? This code looks wrong to me no matter how you look at it?

Reply via email to