Last active
August 29, 2015 14:20
-
-
Save JakobOvrum/3bc98e8e53c03c1c6ef4 to your computer and use it in GitHub Desktop.
List classes in a module at CT
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
alias Identity(alias sym) = sym; | |
template ClassesInModule(alias mod) | |
{ | |
import std.typetuple : Filter, staticMap; | |
enum isAccessibleClassDeclaration(string member) = __traits(compiles, __traits(getMember, mod, member)) && | |
is(Identity!(__traits(getMember, mod, member)) == class); | |
alias LookupMemberType(string member) = Identity!(__traits(getMember, mod, member)); | |
alias ClassesInModule = staticMap!(LookupMemberType, Filter!(isAccessibleClassDeclaration, __traits(allMembers, mod))); | |
} | |
import std.stream; | |
alias ClassesInStdStream = ClassesInModule!(std.stream); | |
pragma(msg, ClassesInStdStream); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment