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