auto + Top-level Const/Immutable

Michel Fortin michel.fortin at michelf.com
Tue Dec 20 17:09:00 PST 2011


On 2011-12-20 18:39:02 +0000, Timon Gehr <timon.gehr at gmx.ch> said:

> On 12/20/2011 07:16 PM, dsimcha wrote:
>> On Tuesday, 20 December 2011 at 17:46:40 UTC, Jonathan M Davis wrote:
>>> Assuming that the assignment can still take place, then making auto
>>> infer non-
>>> const and non-immutable would be an improvement IMHO. However, there
>>> _are_ cases where you'd have to retain const - a prime example being
>>> classes. But value types could have const/immutable stripped from
>>> them, as could arrays using their tail-constness.
>>> 
>>> - Jonathan M Davis
>> 
>> Right. The objects would only be head de-constified if Michael Fortin's
>> patch to allow such things got in. A simple way of explaining this would
>> be "auto removes top level const from the type T if T implicitly
>> converts to the type that would result".
> 
> Yes, having to use
> 
> auto x = cast()y;
> 
> is quite annoying, I'd like this change to happen.
> 
> 
> BTW: What will happen with cast()classRef once we have head-mutable 
> class references?

Same as pointers. With classRef of type "const(Object)", 
"cast()classRef" becomes of the head-mutable type: "const(Object)ref".

-- 
Michel Fortin
michel.fortin at michelf.com
http://michelf.com/



More information about the Digitalmars-d mailing list