Finding out if T is a specialization of another template

Sean Eskapp eatingstaples at gmail.com
Fri Feb 18 12:37:38 PST 2011


== Quote from Lars T. Kyllingstad (public at kyllingen.NOSPAMnet)'s article
> On Fri, 18 Feb 2011 17:16:02 +0000, Sean Eskapp wrote:
> > I was given this code, to check if Y is a specialization of Bar. How
> > does it work?
> >
> > class Bar(T)
> > {
> > }
> >
> > void foo(Y)()
> > {
> >     static if (is(Y Z == Bar!Z))
> >     {
> >         // Here, Z is now an alias to whichever type Bar is //
> >         instantiated with.
> >     }
> >     else
> >     {
> >         // Z is invalid here.
> >     }
> > }
> I'm not sure what you mean by "how does it work".  If it's the is()
> expression you're wondering about, it's documented here:
> http://www.digitalmars.com/d/2.0/expression.html#IsExpression
> -Lars

Ah, yes. I'd checked the is documentation, but whenever I tried using that is
expression outside of an if statement, it complained about my usage, so I assumed
it had something to do with if statements.


More information about the Digitalmars-d-learn mailing list