@Phoko this is my understanding as well. Isn't using std::cout or std::cin all over your program unwitty, where you could just use usingnamespace std; once and for all?
add names to the scope in which they are declared. The effect of this is:
» a compilation error occurs if the same name is declared elsewhere in the same scope;
» if the same name is declared in an enclosing scope, the the name in the namespace hides it.
The using directive, ie usingnamespace std;, does not add a name to the current scope, it only makes the names accesable from it. This means that:
» If a name is declared within a local scope it hides the name from the namespace;
» a name in a namespace hides the same name from an enclosing scope;
» a compilation error occurs if the same name is made visible from multiple namespaces or a name is made visible that hides a name in the global name space.
So, prefer Using Declarations to Using Directive but prefer full scope resolution to Using Declarations.