開発
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が使いづらくなってしまいます。
担当:美馬(バグだといいのですが・・・)
2024/09/13
2024/05/17
2024/05/10
2024/01/05
2023/08/18
2023/07/14
2023/05/12