template magic

Simen kjaeraas simen.kjaras at gmail.com
Tue Jan 25 09:03:54 PST 2011


Trass3r <un at known.com> wrote:

>> 2. What is the reason for Phobos defining param funcs as template
> params?
>
> Correct me if I'm wrong but there's no way to pass an arbitrary
> function to a function in a type-safe way. If you use pointers and
> casts you can't check if the passed function meets certain
> requirements (parameters, return type, attributes, etc.)

It is perfectly possible to typesafely pass a function or delegate to
a function:

void foo( F )( F fn ) {
     fn();
}

You can then add other things to pass parameters:

void foo( F )( F fn, ParameterTypeTuple!F args ) {
     fn( arg );
}

Of course, given a non-template function, it is impossible to safely
pass a function to it.

-- 
Simen


More information about the Digitalmars-d-learn mailing list