This should list all the structs in the module: ---------------------- module my_module; struct Wow {} template ScrapeStructs(Tys...) { import std.meta : AliasSeq; static if (Tys.length == 0) alias ScrapeStructs = AliasSeq!(); else static if (is(Tys[0] == struct)) alias ScrapeStructs = AliasSeq!(Tys[0], ScrapeStructs!(Tys[1 .. $])); else alias ScrapeStructs = ScrapeStructs!(Tys[1 .. $]); } alias AllStructs = ScrapeStructs!(__traits(allMembers, my_module)); pragma(msg, AllStructs); // () pragma(msg, is(Wow == struct)); // true ---------------------- But it doesn't...
But "__traits(allMembers" returns a tuple of strings. You can use mixin to get a type (2.088+) or getMember. --- else static if (is(mixin(Tys[0]) == struct)) alias ScrapeStructs = AliasSeq!(mixin(Tys[0]), ScrapeStructs!(Tys[1 .. $])); ---
Oh yeah, ffs... Sorry! Stupid mistake! >_<