Menu
Home
Create new Paste
Log in
Code
Theme: cobalt
Theme: eclipse
Theme: elegant
Theme: monokai
Theme: neat
Theme: night
Theme: rubyblue
module test; class Experiment { class Nested { } Nested nested; int plain; void delegate() skipped; } import std.traits : isCallable, fullyQualifiedName; import std.typecons : Tuple; import std.typetuple : Filter; template allFields(alias T) { private template combinedFilter(string name) { // filter out nested type definitions and methods // side effect: will filter out delegate/function pointer fields, don't know if listing those makes sense mixin("alias field = " ~ fullyQualifiedName!T ~ "." ~ name ~ ";"); enum combinedFilter = !is(field) && !isCallable!field; } alias allFields = Filter!(combinedFilter, __traits(allMembers, T)); } void main() { pragma(msg, allFields!Experiment); }
Result:
Success
/
Return code: 0
/
Compilation time:
1.787
seconds
/
Run time:
0.017
seconds
Compilation output:
tuple("nested", "plain")
Username
Message
Add comment
Paste info
Author:
Guest
Views:
61
Private:
no
Expires:
Never
Uploaded:
14.03.13 17:54
Votes
:
0
Tweet
Compilation
Compiler:
DMD 2.062
Pointer size:
m64
Actions
Download
Fork
Raw
×
Confirm
Are you sure you want to delete this paste?
There's no way back!
×
Confirm
Reason