Head Const
ZombineDev via Digitalmars-d
digitalmars-d at puremagic.com
Tue Feb 16 02:06:12 PST 2016
On Tuesday, 16 February 2016 at 09:39:31 UTC, Sönke Ludwig wrote:
> 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;
Another bonus to introducing the mutable keyword is the option to
make everything immutable by default (in a future version of D)
and allow the users to have mutable objects only if they use the
mutable keyword.
More information about the Digitalmars-d
mailing list