#include <string> template<typename T> T foo(T s) { class T::iterator b=s.begin(), e=s.end(), p=b; } void foo(char *a) { foo<std::string>(a); }