I guess i am still trying to understand templates. One thing i dont understand is if i am using a string for example, i have to define <std::string> for is_in(), whereas if i am using an int or char, i can just call is_in() without <>, and it figures what is being sent in. I guess i dont understand why some need defining and others do not?
for function templates, the compiler can deduce the template parameters from the function arguments, but only if they can match pretty much exactly The type of the argument "test" is const char, but the type of v is vector<string>. There is no T for which is_in<T> would take arguments with those types.