Lars Luthman wrote:
> The 4 different overloaded versions of the read, readf, write, and
> writef functions will cause ambiguities that will force you to cast them
> to their respective types in order to use pointers to them, for example
> in functors (e.g. a sigc++ slot), like this:
>
> mem_fun(sndobj, (sf_count_t (Sndfile::*)(float*,
> sf_count_t))&Sndfile::read);
>
> If they were specialisations of the same template functions instead,
> with the sample type as template parameter, you'd only have to write
> this:
>
> mem_fun(sndobj, &Sndfile::read<float>);
>
> which is a lot nicer and easier to read.
Interesting use case.
I'm not even close to being an expert in C++ templates, but
I suppose that read function would then be defined as something
like:
template <T> sf_count_t read (T *ptr, sf_count_t items) ;
SO how do I ensure that <T> only gets specialised as short,
int, float and double?
Erik
-- +-----------------------------------------------------------+ Erik de Castro Lopo +-----------------------------------------------------------+ The difference between genius and stupidity is that genius has its limits.Received on Sat Jul 29 16:15:07 2006
This archive was generated by hypermail 2.1.8 : Sat Jul 29 2006 - 16:15:07 EEST