Re: [linux-audio-dev] C++ wrapper for libsndfile

From: Erik de Castro Lopo <mle+la@email-addr-hidden-nerd.com>
Date: Sat Jul 29 2006 - 16:14:44 EEST

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