#include <iostream>
#include <vector>
#include <list>
template<typename Iterator>
void f(Iterator beg, Iterator end)
{
for(auto it = beg; it != end; it = std::next(it))
{
std::cout << *it << " iterator!" << std::endl;
}
}
template<> template<typename T>
void f(std::vector<T>::iterator beg, std::vector<T>::iterator end)
{
for(auto it = beg; it != end; it = std::next(it))
{
std::cout << *it << " vector!" << std::endl;
}
}
int main()
{
std::list<int> x = {1,2,3};
std::cout << "List" << std::endl;
f(x.begin(), x.end());
std::cout << "Vector" << std::endl;
std::vector<int> v = {1,2,3};
f(v.begin(), v.end());
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8bGlzdD4KCnRlbXBsYXRlPHR5cGVuYW1lIEl0ZXJhdG9yPgp2b2lkIGYoSXRlcmF0b3IgYmVnLCBJdGVyYXRvciBlbmQpCnsKICAgIGZvcihhdXRvIGl0ID0gYmVnOyBpdCAhPSBlbmQ7IGl0ID0gc3RkOjpuZXh0KGl0KSkKICAgIHsKICAgICAgICBzdGQ6OmNvdXQgPDwgKml0IDw8ICIgaXRlcmF0b3IhIiA8PCBzdGQ6OmVuZGw7CiAgICB9Cn0KCnRlbXBsYXRlPD4gdGVtcGxhdGU8dHlwZW5hbWUgVD4Kdm9pZCBmKHN0ZDo6dmVjdG9yPFQ+OjppdGVyYXRvciBiZWcsIHN0ZDo6dmVjdG9yPFQ+OjppdGVyYXRvciBlbmQpCnsKICAgIGZvcihhdXRvIGl0ID0gYmVnOyBpdCAhPSBlbmQ7IGl0ID0gc3RkOjpuZXh0KGl0KSkKICAgIHsKICAgICAgICBzdGQ6OmNvdXQgPDwgKml0IDw8ICIgdmVjdG9yISIgPDwgc3RkOjplbmRsOwogICAgfQp9CgppbnQgbWFpbigpCnsKICAgIHN0ZDo6bGlzdDxpbnQ+IHggPSB7MSwyLDN9OwogICAgc3RkOjpjb3V0IDw8ICJMaXN0IiA8PCBzdGQ6OmVuZGw7CiAgICBmKHguYmVnaW4oKSwgeC5lbmQoKSk7CgogICAgc3RkOjpjb3V0IDw8ICJWZWN0b3IiIDw8IHN0ZDo6ZW5kbDsKICAgIHN0ZDo6dmVjdG9yPGludD4gdiA9IHsxLDIsM307CiAgICBmKHYuYmVnaW4oKSwgdi5lbmQoKSk7Cn0=