Template for function or delegate (nothing else)

Steven Schveighoffer schveiguy at yahoo.com
Wed Feb 9 13:20:42 PST 2011


On Wed, 09 Feb 2011 16:14:04 -0500, useo <useo at start.bg> wrote:

> I just have a problem with my variables.
>
> For example... my class/template just looks like:
>
> class Example(T) if (is(T == delegate) || is(T == function))
> {
>    T callback;
>
>    void setCallback(T cb) {
>       callback = cb;
>    }
>
> }
>
> This means that I need variables like Example!(void function())
> myVariable. But is there any possibility to use variables like
> Example myVariable? The template declaration only defines the type of
> a callback and perhaps one method-declaration nothing else. I already
> tried Example!(void*) because delegates and functions are void
> pointers but I always get an error. I hope there is any way to do
> this.

If I understand you correctly, you don't want to declare the type of T  
when instantiating the template?  This is not possible, templates must  
have all parameters defined at instantiation time.

If you just want a shorter thing to type for Example!(void function()),  
you can do:

alias Example!(void function()) MyType;

MyType myVariable;

-Steve


More information about the Digitalmars-d-learn mailing list