型のdefdef詐欺について
昨日こんなこと言って,それに対する補足.
C
#include <stdio.h> typedef int foo; int main(void) { int a = 1; foo b = a; printf("%d\n", b); return 0; }
は普通に1.
D
import std.stdio; typedef int foo = 1; void main() { int a = 1; foo b = a; writefln(b); }
は
type.d(8): Error: cannot implicitly convert expression (a) of type int to foo
classとかもそうだけど型を定義するって言ったら,普通別物になるよねーということで,そんな型に対してあれやこれや深い考察があるわけではなかった.
追記
D言語にはaliasっていうCのtypedef相当がちゃんとあります(使い勝手は全然違うけど).上のだけだと「あれ,じゃあCのtypedefは?」ってなりそうなので一応.