digitalmars.D.learn - static const (D 1.x)
- Bill Baxter (24/24) Sep 18 2007 I've got a situation like this:
- Don Clugston (3/39) Sep 21 2007 Is StaticA getting initialized somewhere?
- Bill Baxter (8/49) Sep 21 2007 It's not getting initialized anywhere, but it's a struct, so it has a
I've got a situation like this: struct A { opEquals int idx = -1; } class Foo(Type) { ... static const A StaticA; } But it doesn't work when I try to do something like this in a function: A myA; if (myA == Foo!(Type).StaticA) { // <-- error here } The error I get is: Error: can only initialize static const StaticA inside static constructor Is this a bug? I notice that it compiles if I make StaticA just "static" instead of "static const". At the very least the compiler error text seems wrong since I'm not trying to initialize anything. --bb
Sep 18 2007
Bill Baxter wrote:I've got a situation like this: struct A { opEquals int idx = -1; } class Foo(Type) { ... static const A StaticA; } But it doesn't work when I try to do something like this in a function: A myA; if (myA == Foo!(Type).StaticA) { // <-- error here } The error I get is: Error: can only initialize static const StaticA inside static constructor Is this a bug? I notice that it compiles if I make StaticA just "static" instead of "static const". At the very least the compiler error text seems wrong since I'm not trying to initialize anything. --bbIs StaticA getting initialized somewhere? If not, that's probably the root cause (and the error message is a bit misleading).
Sep 21 2007
Don Clugston wrote:Bill Baxter wrote:It's not getting initialized anywhere, but it's a struct, so it has a default value with which it should be implicitly initialized. Are you saying that I should be doing static const A StaticA = {-1}; ? I'll give it a try, but it doesn't seem like that should be necessary. --bbI've got a situation like this: struct A { opEquals int idx = -1; } class Foo(Type) { ... static const A StaticA; } But it doesn't work when I try to do something like this in a function: A myA; if (myA == Foo!(Type).StaticA) { // <-- error here } The error I get is: Error: can only initialize static const StaticA inside static constructor Is this a bug? I notice that it compiles if I make StaticA just "static" instead of "static const". At the very least the compiler error text seems wrong since I'm not trying to initialize anything. --bbIs StaticA getting initialized somewhere? If not, that's probably the root cause (and the error message is a bit misleading).
Sep 21 2007