void f(const std::vector<std::string>& arg);
and void f(const std::vector<std::string> arg);
do very different things, I'd say that you should at least sell yourself as paying attention to detail.You could say that this is a poor design of C++, but pick your language, there's usually something like this somewhere. At least in any of the commonly used languages. (Although, C++ is particularly bad about it.)