detect if a symbol is template
Lars T. Kyllingstad
public at kyllingen.NOSPAMnet
Thu Feb 18 01:25:18 PST 2010
Lirong wrote:
> Hi,
>
> Can anyone show me how to detect if a symbol is template?
>
> The following is not working:
>
> template A()
> {
> ...
> }
>
> alias a A;
>
> static if(is (a == template)) // error
>
> Best regards
Is there any use case where it is useful to just know whether something
is a template or not?
A template really can't be used for anything without instantiating it,
and to instantiate it you need to know what parameters it takes.
Checking whether a symbol is a template that takes a certain set of
parameters is easy:
template Foo() { ... }
template Bar(T) { ... }
static if (__traits(compiles, Foo!())) { ... }
static if (__traits(compiles, Bar!int)) { ... }
-Lars
More information about the Digitalmars-d
mailing list