Struct constructors and opCall
Lars Kyllingstad
public at kyllingen.NOSPAMnet
Tue Mar 17 03:59:42 PDT 2009
I've come across the following strange behaviour in D2. Consider a
struct with a constructor, static opCall and non-static opCall:
import std.stdio;
struct Foo
{
this(int i) { writefln("constructor"); }
static void opCall(int i) { writefln("static opCall"); }
void opCall(int i) { writefln("instance opCall"); }
}
void main()
{
auto foo = Foo(1);
Foo(1);
foo(1);
}
I expected that either compilation should fail because of ambiguity, or
the program should compile and run with the following output:
constructor
static opCall
instance opCall
Instead, compiled with the newest DMD (2.026), it prints
constructor
constructor
constructor
This has to be a bug. Is it a known one? I tried searching for "struct
constructor opCall" in both Bugzilla and Google, but couldn't find anything.
-Lars
More information about the Digitalmars-d
mailing list