class MyIterator { public: MyIterator &operator++() { return (*this); } MyIterator &operator--() { v--; return (*this); } private: int v; }; void f2() { MyIterator mi; ++mi; --mi; } template void myTemplateFunction() { static MyIterator mi; static int i; static T t; ++mi; // pure ++i; // impure ++t; // varies } void f3() { myTemplateFunction(); myTemplateFunction(); }