Const template

kris foo at bar.com
Tue Jan 23 00:00:55 PST 2007


Lionello Lunesu wrote:
> Bruno Medeiros wrote:
> 
>> Andrei Alexandrescu (See Website For Email) wrote:
>>
>>> Frits van Bommel wrote:
>>>
>>>> You didn't respond to my paragraph on classes though:
>>>>
>>>> Frits van Bommel wrote:
>>>>  > I also don't see a way this can work for classes (in general). 
>>>> There's
>>>>  > no way to limit a non-final method to non-mutating operations 
>>>> that I'm
>>>>  > aware of, so it could easily be circumvented by subclassing. Even 
>>>> though
>>>>  > that would only allow direct access to non-private fields, 
>>>> mutating base
>>>>  > class methods could still be called for the rest (if available). 
>>>> So then
>>>>  > the only way to get a const version of a class would be if the class
>>>>  > doesn't allow mutations anyway (like java's String). Which leaves us
>>>>  > right back where we started :(.
>>>>  >
>>>>  > And I don't think a 'const' implementation should work for 
>>>> structs and
>>>>  > not for classes...
>>>
>>>
>>> I did when I wrote:
>>>
>>>  >> That is correct. Interface functions, nonfinal methods, and
>>>  >> declared-only functions must be annotated manually.
>>>
>>> I meant - yes, you are right.
>>>
>>> Today, Walter and myself have come with a semantics for const (as in, 
>>> "read-only view" that) seems to be a good starting point. The details 
>>> are yet to be ironed out, but here's the basic plot:
>>>
>>
>> So the keyword for the "read-only view" will be 'const' too? It will 
>> share space with the 'const' as in "compile time constant" ?
> 
> 
> 'const' is not always a compile time constant. A const in function or in 
> a class can have a different value for each call/instance. Don't ask me 
> why.
> 
> 
> L.


const int also takes space in an executable. It apparenltly becomes a 
true 4-byte instance, not a compile-time constant. Though, why anyone 
would *expect* to take the address of a constant is completely beyond my 
comprehension.

No big deal, huh? Then consider the avalanche of constants in a full 
Win32 API



More information about the Digitalmars-d mailing list