#include class Int { int I; public: Int(){} operator int() { return I; } }; template class List : public T { T* v; int sz; public: List() { v = new T[sz=10]; } List(int s) { v = new T[sz=s]; } ~List() { delete[] v; } inline int size() const; }; template inline int List::size() const { return sz; } #include main() { typedef List intList; intList list(10); cout << list.size() << "\n"; return 0; }