Fooをクラスじゃなくてテンプレートにしてmixinするという本質から外れた解法を思いつきました。
public import std.c.stdarg; public template Foo(T) { ...(snip)...
private import foo; void main() { mixin Foo!(int); int j; j = foo("hello", 3, 23L, 4); printf("j = %d\n", j); assert(j == 30); }
ぜんぜん解決している気分になりません。動くことは動くけどね...
と思ったけどこれもだめだ。baz.dとか作って
private import foo; void baz() { mixin Foo!(int); }
とかをリンクすると'Previous Definition Different'とか言うんですけど。どうすれバインダー!