I commonly formulate it in the opposite. A master of C++ knows when to use the simpler function. For example, is it more sensible to use 2 overloads than a template, when is a free function a better idea than methods or functor, when is a struct (a real struct w/o methods) a better idea than a fully fledged class. The point is that you should not use the most powerful tool for the job, but the weakest that will get the job done.
Novice programmers write code they don't understand, advanced programmers write code they understand and master programmers write code even the novice understands. (I don't know where this quote comes from.)