Why do "const inout" and "const inout shared" exist?

Andrei Alexandrescu via Digitalmars-d digitalmars-d at puremagic.com
Sun Jul 2 05:51:06 PDT 2017


On 07/02/2017 08:46 AM, Shachar Shemesh wrote:
> Second, there are optimizations that can take place over "const" that 
> cannot over "shared const" even assuming aliasing (such as if the 
> compiler knows no other pointer was changed between two accesses).

Wouldn't that also fall within the realm of inclusion polymorphism?

> The last point is that assuming no pointer aliasing is a fairly common 
> optimization to take in C and C++, simply because of the huge 
> performance gains it provides. It is so huge that it is sometimes turned 
> on by default despite the fact it changes language semantics. It would 
> be a pity to block any potential to have it in D.

Allowing the conversion does not preclude any optimization; after all 
there is no replacement of one with another. The conversion simply 
removes unnecessary restrictions.


Andrei


More information about the Digitalmars-d mailing list