I would like to create a namespace alias that can be changed globally to refer to different scopes at runtime. Consider this:
#include <iostream>
namespace scopePrimary {
    int somethingOfInterest = 1;
}
namespace scopeSecondary {
    int somethingOfInterest = 2;
}
namespace scopeTarget = scopePrimary;
int doStuffInTargetScope() {
    using namespace scopeTarget;
    return somethingOfInterest;
}
int main() {
    // Do something with the somethingOfInterest variable defined in scopePrimary
    std::cout << "doStuffInTargetScope():\n" \
    "  somethingOfInterest = " << doStuffInTargetScope() << std::endl;
    namespace scopeTarget = scopeSecondary;
    using namespace scopeTarget;
    // Do something with the somethingOfInterest variable defined in scopeSecondary
    std::cout << "doStuffInTargetScope():\n" \
    "  somethingOfInterest = " << doStuffInTargetScope() << std::endl;
    std::cout << "main():\n  somethingOfInterest = "
    << somethingOfInterest << std::endl;
}
Now, the above code does compile, but instead of getting the output would I expect:
doStuffInTargetScope():
  somethingOfInterest = 1
doStuffInTargetScope():
  somethingOfInterest = 2
main():
  somethingOfInterest = 2
I'm getting this output:
doStuffInTargetScope():
  somethingOfInterest = 1
doStuffInTargetScope():
  somethingOfInterest = 1
main():
  somethingOfInterest = 2
It seems that when trying to redefine namespace scopeTarget, C++ will only use the most local alias definition, instead of overwriting the global alias. 
 Does anyone know a work-around to achieve my goal here?
 
    