[phobos] isClass!T
Lars Tandle Kyllingstad
lars at kyllingen.net
Thu May 19 08:11:16 PDT 2011
Several places in Phobos I've noticed tests like if(is(T==class)) that
check whether T is a class type. I suspect it is usually meant for
these tests to pass if T is an interface as well, but this is not the
case. Doing
grep 'is(\w\+\s*==\s*class)' *.d
on the Phobos sources reveals many cases where the test for
is(T==interface) has most likely been forgotten. This should be fixed,
and I think the best way is to add the following to std.traits:
template isClass(T)
{
enum isClass = is(T == class) || is(T == interface);
}
Most instances of is(T==class) in Phobos can then be replaced with
isClass!T.
What say you?
-Lars
More information about the phobos
mailing list