Exceptional C++ Style : 6. 여러수준의 일반성, 2부: 충분히 일반적인가?
첫번째 문제 아래 코드를 실행해 보면, #include <stdio.h> #include <list> template <class T> void destroy(T* p) { p->~T(); } class Integer { public: Integer(int value) : p(value) {printf("create Interger\n");} ~Integer() { printf("destroy Interger\n"); } int getValue() {return p;} int p; }; template<typename T> class Fwdlter : public std::list<T>::iterator { T* p; public: Fwdlter(T* x) :p(x) {} ~Fwdlter() { printf("iterator destroy\n");} Fwdlter(const Fwdlter& mit) : p(mit.p) {} Fwdlter& operator++() {++p;return *this;} Fwdlter operator++(int) {Fwdlter tmp(*this); operator++(); return tmp;} bool operator==(const Fwdlter& rhs) {return p==rhs.p;} bool operator!=(const Fwdlter& rhs) {return p!=rhs.p;} T& operator*() {return *p;} }; template <class Fwdlter> void destroy(Fwdlter first, Fwdlter last) { while (f...