Someone once hinted that doing this in a header file is not advised:
using namespace std;
Why is it not advised?
Could it cause linker errors like this: (linewrapped for convenience)
error LNK2005: "public: __thiscall std::basic_string<char,struct
std::char_traits<char>,class std::allocator<char> >::
~basic_string<char,struct std::char_traits<char>,class std::allocator<char> >
(void)" (??1?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ)
already defined in tools.lib(Exception.obj)
Because it forces anyone who uses your header file to bring the
std
namespace into global scope. This could be a problem if they have a class that has the same name as one of the standard library classes.If the file gets included elsewhere the compilation unit will implicitely get the using directive. This can lead to confusing errors when names overlap.