HiveBrain v1.2.0
Get Started
← Back to all entries
patterncppCritical

What's the problem with "using namespace std;"?

Submitted by: @import:stackoverflow-api··
0
Viewed 0 times
withproblemtheusingstdwhatnamespace

Problem

I have heard using namespace std; is wrong, and that I should use std::cout and std::cin directly instead.

Why is this? Does it risk declaring variables that share the same name as something in the std namespace? Are there performance implications?

Solution

Consider two libraries called Foo and Bar:

using namespace foo;
using namespace bar;


Everything works fine, and you can call Blah() from Foo and Quux() from Bar without problems. But one day you upgrade to a new version of Foo 2.0, which now offers a function called Quux(). Now you've got a conflict: Both Foo 2.0 and Bar import Quux() into your global namespace. This is going to take some effort to fix, especially if the function parameters happen to match.

If you had used foo::Blah() and bar::Quux(), then the introduction of foo::Quux() would have been a non-event.

Code Snippets

using namespace foo;
using namespace bar;

Context

Stack Overflow Q#1452721, score: 2935

Revisions (0)

No revisions yet.