What is the difference between...

Sean Kelly sean at f4.ca
Fri Sep 7 11:48:15 PDT 2007


Bruno Medeiros wrote:
> Janice Caron wrote:
>> -----Original Message-----
>> From: digitalmars-d-bounces at puremagic.com 
>> [mailto:digitalmars-d-bounces at puremagic.com] On Behalf Of Daniel919
>> Sent: 07 September 2007 12:39
>> To: digitalmars-d at puremagic.com
>> Subject: Re: What is the difference between...
>>
>>> > (2) void f(const(int) x)
>>> Useless, like all: const/invariant(simplestoragetype)
>>
>> It is? Why? Why doesn't it mean x is a const int?
>>
>> So f(const(int)* x) means x is a pointer to const int, but 
>> f(const(int) x) does not mean x is a const int? Now I'm very, very 
>> confused.
>>
>> Why am I not getting this?
>>
> 
> const(...) makes everything inside the parenthesis const. But there is 
> one exception: If that const is part of a declaration, then the 
> top-level value/type is not const. (the top-level value is the one that 
> changes with assignments) So:
> 
> const(int)* x;  // mutable pointer to const int
> const(int)  x;  // mutable int;
> const(int*) x;  // mutable pointer to const int
> const(int**) x;  // mutable pointer to const pointer to const int;
> const(int*)* x;  // mutable pointer to const pointer to const int;

Wouldn't this be "mutable pointer to mutable pointer to const int?"


Sean



More information about the Digitalmars-d mailing list