On Saturday, 11 August 2012 at 18:56:30 UTC, Jakob Ovrum wrote:
struct S(T) {}template isS(T : S!U, U) { enum isS = true; } template isS(T) { enum isS = false; } static assert(isS!(S!float)); static assert(!isS!float);
Same idea, but doing it with just one template and using static ifs...
struct S(T) {} template isS(T) { static if(is(T _ : S!U, U)) enum isS = true; else enum isS = false; } static assert(isS!(S!float)); static assert(!isS!float);