On Tuesday, 4 February 2014 at 11:01:01 UTC, Jakob Ovrum wrote:
On Tuesday, 4 February 2014 at 09:30:22 UTC, ed wrote:
Hi,

given a struct like so:

struct S(alias N, T) {...}

is there a way to get the template parameters of S? Something like:

S.typetuple[0] == N,
S.typetuple[1] == T

I've had a look at std.typecons and std.typetuple but I don't see what I'm missing something and cannot see a way to do the above.

Thanks,
ed

Use type deduction:

---
struct S(size_t n, T) {}

enum isS(T) = is(T == S!(n, U), size_t n, U);

template isS(T, size_t n)
{
    static if(is(T == S!(n2, U), size_t n2, U))
        enum isS = n == n2;
    else
        enum isS = false;
}

alias MyS = S!(3, float);

static assert(isS!MyS);
static assert(isS!(MyS, 3));
static assert(is(MyS == S!(3, float)));
---

This is it!

Thanks,
ed

Reply via email to