Best practices for logical const

Meta jared771 at gmail.com
Sat Feb 15 19:04:25 PST 2014


On Sunday, 16 February 2014 at 02:41:36 UTC, Steven Schveighoffer 
wrote:
> inout does not know when the incoming data is mutable.
>
> Effectively, inout is just like const, but has implications on 
> the return value.
>
> -Steve

Yeah, but say you magically knew the data was mutable.

void logicalConstBump(T)(ref inout(T) t, string 
originalMutability)
{
     if (originalMutability == "mutable")
     {
         cast(T)t += 1;
     }
     else
     {
         assert(0);
     }
}

Obviously this is extremely contrived, but inout is effectively 
logical const here. Is there no way to know what the "original" 
mutability of t is at compile-time?


More information about the Digitalmars-d mailing list