typedef void* type;  
generic void*
class stack {
\fbox{stack}
public: stack( int n = 12 ) { top = -1; impl = new type[n]; } ~stack() { delete[] impl; } bool empty() { return top == -1; } void push( type it ) { impl[++top] = it; } type pop() { return impl[top--]; } private: int top; type* impl; };

slide: Using the void pointer