Listing 1: Simple template class.

template <typename T>
class Signal {
public:
    Signal(int nSamples); // allocate underlying storage
    ~Signal();
    operator T *() { return m_pSamples; }
private:
    T *m_pSamples;
};