module pind.samples.ja.is_expr.is_expr_1; import std.stdio; interface Clock { void tellTime(); } class AlarmClock : Clock { override void tellTime() { writeln("10:00"); } } void myFunction(T)(T parameter) { static if (is (T : Clock)) { // ここにいれば、TをClockとして使うことができる writeln("This is a Clock; we can tell the time"); parameter.tellTime(); } else { writeln("This is not a Clock"); } } void main() { auto var = new AlarmClock; myFunction(var); myFunction(42); }