[linux-audio-dev] C++ wrapper for libsndfile
Erik de Castro Lopo
mle+la at mega-nerd.com
Sat Jul 29 13:14:44 UTC 2006
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.
More information about the Linux-audio-dev
mailing list