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.