quirks of functions and delegates
Ender KaShae
astrothayne at gmail.com
Tue Jul 31 15:04:13 PDT 2007
Jarrett Billingsley Wrote:
> "Ender KaShae" <astrothayne at gmail.com> wrote in message
> news:f8ghug$5bg$1 at digitalmars.com...
>
> > 1.) when I try template t(type: function) I get an error, but there must
> > be some way to specify that you need the type to be a function
>
> template Templ(T : U function(V), U, V...)
> {
>
> }
>
> void main()
> {
> mixin Templ!(int); // fails
> mixin Templ!(void function(int, float)); // OK
> }
>
> :)
I tried that, however when instantiating the template the return type and paramater tuple must be explicitly given, using a static if statement can be used to the same affect however
>
> > 2.) in an example in the docs it says that arrays of functions are invalid
> > types in c++ and d, however i've used arrays of function pointers in c++
> > and it seems strange that such a type would be invalid, a function pointer
> > is after all just a pointer
>
> There's a slight difference. A function pointer is valid in both languages,
> but a function type is illegal. It's very difficult to get at a function
> type in D, but possible. Consider:
>
> typedef void Foo();
> Foo[] f;
>
> typedef void function() Bar;
> Bar[] g;
>
> Notice that the first defines Foo as a function -- not function _pointer_ --
> type. Foo[] f; fails. But the second defines Bar as a function pointer,
> and Bar[] g is fine.
>
>
More information about the Digitalmars-d
mailing list