xxxxxxxxxx
import std.stdio : writeln;
mixin template FooOne()
{
final void foo( ref int val )
{
val.writeln;
}
}
mixin template FooTwo()
{
final void foo( ref string val )
{
val.writeln;
}
}
mixin template FooThree()
{
final void foo( ref float val )
{
val.writeln;
}
}
class LookAtMe
{
mixin FooOne!();
mixin FooTwo!();
mixin FooThree!();
final void write( int val )
{
foo( val );
}
final void write( string val )
{
foo( val );
}
final void write( float val )
{
foo( val );
}
}
static assert( __traits( getOverloads, LookAtMe, "foo" ).length == 3, "Incorrect number of foo overloads! Found " ~ __traits( getOverloads, LookAtMe, "foo" ).length.stringof ~ ", expected 3" );