#include <assert.h>
template <class T = int> class TreeIterator;
template <class T = int> class Tree {
public:
T *root;
void flush();
};
template <class T> class TreeIterator {
public:
T *ptr;
TreeIterator(const Tree<T> &tree) { ptr = tree.root; }
TreeIterator(const TreeIterator<T> &); // { assert(0); }
};
template <class T>
void Tree<T>::flush() {
TreeIterator<T> i = *this;
}
int main() {
Tree<> t;
TreeIterator<> i = t;
// t.flush();
return 0;
}