開発
2014/11/11
Template Mixinでオーバーロード出来ない
mima
以下のようなD言語のコードがうまく動きません。
mixin template T() { void g(int x){} void h(){} void h(int x){} } struct S { mixin T; void f(){} void f(int x){} void g(){} } void main() { import std.stdio; __traits(getOverloads, S, "f").stringof.writeln(); __traits(getOverloads, S, "g").stringof.writeln(); __traits(getOverloads, S, "h").stringof.writeln(); }
結果は以下の通りになります。
tuple(f, f) tuple(g) tuple(h, h)
どうやら、ミックスイン元とミックスイン先で関数をオーバーロードしようとすると、うまく行かないみたいです。
このバグ(もしかすると仕様?)のせいで、かなりTemplate Mixinが使いづらくなってしまいます。
担当:美馬(バグだといいのですが・・・)