On Tuesday, 29 September 2015 at 07:50:42 UTC, rumbu wrote:
Having a template:

struct SomeStruct(int size)
{

}

Is there any language trait returning the value of size template parameter for the template instantiation SomeStruct!10?

Something like this is ok?

struct SomeStruct(int size)
{
        enum structSize = size;
}

template isSomeStruct(alias S)
{
        void check(alias T)(SomeStruct!T val) { }
        enum isSomeStruct = __traits(compiles, check(S));
}

template getStructSize(alias S) if (isSomeStruct!S)
{
        enum getStructSize = S.structSize;
}

void main()
{
        import std.stdio;
        SomeStruct!10 test;
        writeln(isSomeStruct!test);
        writeln(getStructSize!test);
}


Reply via email to