Why are the first two calls to doSomething OK by the compiler, but using two elements in the list causes an ambiguous call?
doSomething
#include
"hello" and "stack" both decay to const char * which satisfies the InputIterator concept. This allow's them to match std::vector's constructor #4.
"hello"
"stack"
const char *
If you pass std::string objects the ambiguity is resolved.
std::string