型の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は?」ってなりそうなので一応.