D言語のtypedef

D言語にはaliasとtypedefがあって,CやC++のtypedefはaliasとなっています.じゃあtypedefは何かというともっと強いもので,違う型を定義します.

typedef int NewType;

これは一つの売りだったわけですが,もうdeprecatedなものになっています.理由は代替機能がいくつかあったからで,コメントでSHOOさんが書いてるenumやalias thisを使って

struct NewType
{
    int value;
    alias value this;
}

とかやれば同じようにsubtyping出来ちゃうわけです.後なんか色々理由があった気がするけど,それは昔の「typedef消すよ」スレッドを見てください.ということで,今からD言語使う人はtypedefは使わないようにしましょう.A先生に怒られますよ!