usingnamespace std; takes the contents of that namespace and dumps it all into global scope. If you ever try to use a name that happened to be in there, it'll clash. That's why it's good practice to not use such a broad directive, especially in headers when people who use that code might not want the std namespace filling the global one.