import std.stdio;
struct C(D){
    D d;
}
void f(alias A,B)(A!B a){
    writeln(a.d);
}//A,却是可以

void main()
{
    C!int a;
    C!long b;
    a.d=20;
    b.d=10;
    //f!(C,int)(a);
    //f!(C,long)(b);
    f(a);
    f(b);
}

betterC版也可以:

import core.stdc.stdio;
extern(C):
struct C(D){
    D d;
}
void f(alias A,B)(A!B a){
    printf("%i\n",a.d);
}