...ing logging 4.0

はてなブログに移行しました。D言語の話とかいろいろ。

dmd 2.019

import std.stdio;
struct A {
    private int a;
    public this(int a) {
        writefln("ctor");
        this.a = a;
    }
    public static A opCall(int a) {
        writefln("opCall");
        return A(a);
    }
}
void main() {
    writefln(A(1).a);
    A x = A(2);
    writefln(x.a);
    //A y(3); // error
    //writefln(y.a);
}
/+
ctor
1
ctor
2
+/

構造体コンストラクタ キタ━(゚∀゚)━!!
コンストラクタがあるときはstatic opCall()が呼ばれなくなってたけど,曖昧な呼び出しとしてエラーにしてくれてもよさそう?
あと3つ目の書き方ができないのは相変わらずなのね.