The problem with putting using namespace in the header files of your classes is that it forces anyone who wants to use your classes (by including your header files) to also be 'using' (i. e.
There seem to be different views on using 'using' with respect to the std namespace.
Some say use ' using namespace std', other say don't but rather prefix std functions that are to be used.
In other word, if you know that the initialization of a variable in using may throw a particular exception, i wrap it with try-catch.
Similarly, if within using body something may happen, which.
Updating the using keyword was specifically for templates, and (as was pointed out in the accepted answer) when you are working with non-templates using and typedef are.