what would this do?: template Foo(T) { static if(logic1!(T)) template(fail); } template Foo(T) { static if(logic2!(T)) template(fail); } from a programers level, it might be valid. My though is (an wow could this be costly) try all cases*, if there isn't exactly one match, error. * Walter's not going to like that for performance reasons.