in vs. const

Sergey Gromov snake.scaly at gmail.com
Sun Mar 8 16:48:11 PDT 2009


Sat, 07 Mar 2009 17:43:19 -0800, Robert Fraser wrote:

> Adam Burton wrote:
>> Sean Kelly wrote:
>> 
>>> dsimcha wrote:
>>>> All the discussion about const on this NG lately has made me realize that
>>>> I have no idea what the difference is between const and in, i.e. what is
>>>> the difference between:
>>>>
>>>> SomeType foo(const SomeType bar) and
>>>> SomeType foo(in SomeType bar)
>>> There's no difference between them.  The 'in' version just happens to be
>>> D1-compatible, and its meaning could be more easily changed over time if
>>> any tweaking is necessary (unlikely).
>> I have not done any D2, but surely 'in' is modifiable in the function locally 
>> where as const is not (so since const is not modifiable at all it implies 
>> in).
>> For example:
>> 
>> void myfunc(in int i)
>> {
>> 	i = 10;	// i is changed to 10, k stays as 12
>> }
>> 
>> int k = 12;
>> myfunc(k);	
>> 
>> =================================
>> 
>> void myfunc(const int i)
>> {
>> 	i = 10;	// Fails to compile as i is const
>> }
>> 
>> in k = 12;
>> myfunc(k);
>> 
> 
> No it's not. "in" means "const scope" in D2 (and scope is a NOP right now).

Closures are not allocated for delegates passed as scope arguments so
scope is far from NOP.



More information about the Digitalmars-d mailing list