Introduction to traits (and __traits)

bearophile bearophileHUGS at lycos.com
Fri Aug 30 14:51:37 PDT 2013


Joseph Rushton Wakeling:

>     static if (!__traits(hasMember, G, "directed") ||
>                !__traits(hasMember, G, "edge") ||
>                !__traits(hasMember, G, "edgeCount") ||
>                !__traits(hasMember, G, "vertexCount") ||
>                !__traits(hasMember, G, "isEdge") ||
>                !__traits(hasMember, G, "edgeID") ||
>                !__traits(hasMember, G, "addEdge") ||
>                !__traits(hasMember, G, "degreeIn") ||
>                !__traits(hasMember, G, "degreeOut") ||
>                !__traits(hasMember, G, "incidentEdgesIn") ||
>                !__traits(hasMember, G, "incidentEdgesOut") ||
>                !__traits(hasMember, G, "neighboursIn") ||
>                !__traits(hasMember, G, "neighboursOut"))

Perhaps can shorten that code writing a hasMembers helper (and I 
suggest to keep those names sorted):

static if (hasMembers!(G, "addEdge
                            degreeIn
                            ...
                            vertexCount".split) {

Bye,
bearophile


More information about the Digitalmars-d-learn mailing list