It seems as though more experienced programmers tend to write code with std::cout, std::string, etc., whereas less experienced programmers always write usingnamespace std;. They also tend to assume that, in code snips, it is already included.
Why is this? If it's a dislike, what's the problem with it? As stated in the namespaces tutorial on this site, a namespace can be overridden if need be. Is it the case that you have written your own namespaces? Or that you so seldom use things like the STL and stdin/out that it just isn't necessary?
When I see cout in someone's program, how do I know if it's std::cout or some other user-defined variable called cout? I have to read the whole thing.
While that is a word that's unlikely to be used as a variable, how about count, begin, swap, copy, remove, array, max, or ignore? (all those names exist in namespace std, in different headers, but standard headers may include other standard headers, so I can't just look at the list of #includes)
Is it the case that you have written your own namespaces?
For a one-off forum post, no (and using namespace std; is just fine in a small .cpp file), but at work, there are hundreds of namespaces, some three or four levels nested. Any using declaration would make things far too confusing.