"Nick Sabalausky" <[email protected]> wrote in message 
news:[email protected]...
>I don't suppose there's an easy general way to get the paramaters of a 
>templated type just from the type itself? Ie, a way to get around this:
>
> class Foo(char[] str) {}
> static assert(Foo!("a").stringof != Foo!("b").stringof)
> // ^ fails because it evaluates to "Foo" != "Foo"
>
> I can probably work around it in my current case by sticking str into a 
> const member of Foo and using that together with .stringof, but thought 
> I'd see if there was a better way.
>
>

Just for reference for anyone interested, in my own case I've worked around 
it like this:

class Foo(char[] str)
{
    static const char[] StringOf = "Foo!("~str.stringof~")";
}
static assert(Foo!("a").StringOf == `Foo!("a")`);

Similar workarounds can be done for other template signatures, like a 
custom-made function for enums, or a "static if(StringOf exists) use 
StringOf else use stringof" for general T types.


Reply via email to