On Saturday, 12 October 2013 at 11:50:05 UTC, Artur Skawina wrote:
On 10/12/13 13:42, Artur Skawina wrote:template isBaseOf(BASE, C) { static if (is(C S == super)) enum isBaseOf = { foreach (A; S) static if (is(A==BASE)) return true; return is(C==BASE); }(); else enum isBaseOf = is(C==BASE); }That was too verbose. template isBaseOf(BASE, C) { enum isBaseOf = { static if (is(C S == super)) foreach (A; S) static if (is(A==BASE)) return true; return is(C==BASE); }(); } artur
I like that! Avoids importing std.traits, And will correctly handle interfaces as well.
