If you want to tell the iterator tag type to the user, you can use the runtime tech such as through tag_type() function.so for template class any_iterator, the CategoryOrTraversal template argument should not needed; and to the extreme, all the argument except the Value are not needed. code like below:template< class Value> class any_iterator;in this case, type-erase tech is used in its extreme.