const a storage class or a type modifier?
Jonathan M Davis
jmdavisProg at gmx.com
Sun Nov 28 05:43:41 PST 2010
On Sunday 28 November 2010 05:28:45 Andrej Mitrovic wrote:
> AFAIK "in" will guarantee you can't change a variable, even when using
> arrays, e.g.:
>
> void foo(in int[] a) {
> int[] b;
> a[0] = 1; // won't compile
> a = b; // won't compile (I think?)
> }
>
> void foo(int[] a) {
> int[] b;
> a[0] = 1; // compiles, and changes are reflected in the caller
> a = b; // compiles, but it doesn't change "a" in the calling code
> }
>
> I don't have DMD on this PC so I haven't tested it.
Well, in is essentially an alias for const scope, so no, you can't change any
variables marked in. And since const is transitive, that includes anything that
the variable references. So, arrays marked with in are fully const and cannot be
altered in any way.
- Jonathan M Davis
More information about the Digitalmars-d
mailing list