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