Does D provide complete template constraint granularity?

In other words, I want to only accept structs in the template below. I've find the isAggregateType which is close but no cigar. Am I missing
some other filters?

And a more open ended question. Is there a more elegant solution for the below function? Maybe a one-liner? I have a knack for making simple solutions
complex :)



// Calculate the number of components for openGL generic
// vertex attribute. Must be 1, 2, 3, 4.

// isAggregateType constraint accepts class, union, struct, and interface

int getNumberComponents(T)(T someStruct) if (isAggregateType!(T))
{
    int members = 0;
    foreach (i, member; someStruct.tupleof)
    {
        //writefln("Member %s:", i);
        //writefln("  type : %s", typeof(member).stringof);
        //writefln("  value: %s", member);
        members++;
    }
    return members;
}

Reply via email to