Template for function or delegate (nothing else)

useo useo at start.bg
Thu Feb 10 08:30:51 PST 2011


== Auszug aus Steven Schveighoffer (schveiguy at yahoo.com)'s Artikel
> On Thu, 10 Feb 2011 09:48:14 -0500, useo <useo at start.bg> wrote:
> > I created a complete, new file with the following code:
> >
> > module example;
> >
> > void main(string[] args) {
> > 	Example!(void function()) myVar;
> > }
> >
> > class Example(T) if (is(T == delegate) || is(T == function)) {
> > }
> >
> > And what I get is:
> >
> > example.d(4): Error: template instance Example!(void function())
does
> > not match template declaration Example(T) if (is(T == delegate)
|| is
> > (T == function))
> > example.d(4): Error: Example!(void function()) is used as a type
> >
> > I'm using the current stable version 2.051.
> Found this invalid bug.  Apparently, this is expected (!) behavior:
> http://d.puremagic.com/issues/show_bug.cgi?id=3464
> So use this instead:
> class Example(T) if (is(T == delegate) || is(typeof(*T.init) ==
function))
> Ugly, I know, but I guess that's what we got to work with.
> -Steve

Yes, looks a bit unusual but it works, thanks!


More information about the Digitalmars-d-learn mailing list