Multiple using Statements
Can I have multiple using statements for the same namespace in different scopes? What happens if I do?
Yes, you can have multiple using statements for the same namespace in different scopes. The using statement only applies to the scope in which it appears and any nested scopes.
If you have multiple using statements for the same namespace in different scopes, each one will apply only to its own scope and any nested scopes.
For example:
#include <iostream>
namespace MyNamespace {
void Foo() {
std::cout << "MyNamespace::Foo()\n";
}
}
void Function1() {
using MyNamespace::Foo;
// Calls MyNamespace::Foo()
Foo();
}
void Function2() {
// No using statement here
// Explicit namespace qualifier needed
MyNamespace::Foo();
}
int main() {
using MyNamespace::Foo;
Foo();// Calls MyNamespace::Foo()
Function1();
Function2();
}MyNamespace::Foo()
MyNamespace::Foo()
MyNamespace::Foo()The using statement in Function1 applies only within that function, while the using statement in main applies to main and any functions called from main that don't have their own using statements.
Namespaces, Includes, and the Standard Library
A quick introduction to namespaces in C++, alongside the standard library and how we can access it