On Sunday, 8 July 2012 at 22:10:32 UTC, bearophile wrote:
When tmp1 is defined globally, dmd is doing something different, in some way it sees global immutables almost as enums... I don't know if this is present in D specs.

You see it well with this test program:


immutable int[] A = [1];
template Foo(size_t n) {}
void main() {
    alias Foo!(A.length) fooA; // OK
    enum int[] B = [1];
    alias Foo!(B.length) fooB; // OK
    immutable int[] C = [1];
    alias Foo!(C.length) fooC; // error
}


Bye,
bearophile

Thanks for the reply and explanation.

I would never have thought that the declaration scope (local vs global) would have such an effect.. Is this specified anywhere?

Reply via email to