Head Const

Sönke Ludwig via Digitalmars-d digitalmars-d at puremagic.com
Tue Feb 16 01:39:31 PST 2016


Am 16.02.2016 um 08:20 schrieb Ola Fosheim Grøstad:
> On Monday, 15 February 2016 at 22:48:16 UTC, Walter Bright wrote:
>> rears its head again :-)
>>
>> Head Const is what C++ has for const, i.e. it is not transitive,
>> applies to one level only. D has transitive const.
>>
>> What head const will do for us:
>>
>> 1. make it easy to interface to C++ code that uses const, as currently
>> it is not very practical to do so, you have to resort to pragma(mangle)
>>
>> 2. supports single assignment style of programming, even if the data
>> is otherwise mutable
>>
>> The downside is, of course, language complexity.
>
> Maybe you can get away with adding "mutable", which is needed for
> intrusive ref counting as well:
>
> C++:
> Type * const ptr;
>
> struct ConstType {
> mutable int rc;
> }
>
>
> D:
> const mutable(Type)* ptr;
>
> struct ConstType {
> mutable(int) rc;
> }

As a bonus, this would also provide a natural syntax to define 
tail-const class references:

mutable const(C) something;



More information about the Digitalmars-d mailing list