On Sat, Dec 02, 2006 at 04:23:32AM -0500, Kyle Moffett wrote:
> On Dec 01, 2006, at 12:21:49, Al Viro wrote:
> >And that's where it gets interesting. It would be very nice to get to
> >the following situation:
> > * callbacks are void (*)(void *)
> > * data is void *
> > * instances can take void * or pointer to object type
> > * a macro SETUP_TIMER(timer, func, data) sets callback and data
> >and checks if func(data) would be valid.
>
> This is where a very limited form of C++ templates would do nicely;
> you could define something like the following:
>
> template <typename T>
> static inline void setup_timer(struct timer_list *timer,
> void (*function)(T *), T *data)
> {
> timer->function = (void (*)(void *))function;
> timer->data = (void *)data;
> init_timer(timer);
> }
>
> Any attempts to call it with mismatched "function" and "data"
> arguments would display an "Unable to find matching template" error
> from the compiler.
>
> Unfortunately you can't get simple templated functions without
> opening the whole barrel of monkeys involved with C++ support;
Fortunately, you can get all checks done by gcc without involving C++ (or
related flamewars). See original post for a way to do it in a macro
and for fsck sake, leave [email protected] out of it.
Folks, please trim the Cc. My apologies for cross-posting in the first place,
should've double-posted instead and manually forwarded relevant followups...
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[Index of Archives]
[Kernel Newbies]
[Netfilter]
[Bugtraq]
[Photo]
[Stuff]
[Gimp]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Linux RAID]
[Video 4 Linux]
[Linux for the blind]
[Linux Resources]