C, if I use
#include "someFile.h", the preprocessor does a textual import, meaning that the contents of
someFile.h are "copy and pasted" onto the
#include line. In
C++, there is the
using directive. Does this work in a similar way to the
#include, ie: a textual import of the namespace?
using namespace std; // are the contents of std physically inserted on this line?
If this is not the case, then how is the
using directive implemented`.
Best How To :
using namespace X will simply tell the compiler "when looking to find a name, look in X as well as the current namespace". It does not "import" anything. There are a lot of different ways you could actually implement this in a compiler, but the effect is "all the symbols in X appear as if they are available in the current namespace".
Or put another way, it would appear as if the compiler adds
X:: in front of symbols when searching for symbols (as well as searching for the name itself without namespace).
[It gets rather complicated, and I generally avoid it, if you have a symbol
X::a and local value
a, or you use
using namespace Y as well, and there is a further symbol
Y::a. I'm sure the C++ standard DOES say which is used, but it's VERY easy to confuse yourself and others by using such constructs.]
In general, I use explicit namespace qualifiers on "everything", so I rarely use
using namespace ... at all in my own code.