Template for function or delegate (nothing else)
bearophile
bearophileHUGS at lycos.com
Wed Feb 9 13:27:07 PST 2011
useo:
> 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?
D is not the SML language, templates are just placeholders. If you don't instantiate a template, you have only a symbol. Example is only assignable to an alias (and in past, to a typedef):
alias Example Foo;
> 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.
I don't yet understand what you are trying to do.
Other notes:
- What if your T is a functor (a callable class/struct/union instance that defined opCall)?
- sizeof of a function pointer is 1 CPU word, while a delegate is 2 CPU words (and a delegate clojure has stuff on the heap too, sometimes).
Bye,
bearophile
More information about the Digitalmars-d-learn
mailing list