quirks of functions and delegates

Jarrett Billingsley kb3ctd2 at yahoo.com
Sat Jul 28 16:30:13 PDT 2007


"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
}

:)

> 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