Restricting `using` directives to the current file

c++, using-directives

Solution

Perhaps wrapping the code to be included inside its own namespace could achieve the behavior you want, since name spaces have scope affect.

// FILENAME is the file to be included
namespace FILENAME_NS {
   using namespace std;
   namespace INNER_NS {
      [wrapped code]
   }
}
using namespace FILENAME_NS::INNER_NS;

and in some other file

#include <FILENAME>
// std namespace is not visible, only INNER_NS definitions and declarations
...

Problem

Sorry for this silly question, but is there any way to restrict `using` directives to the current file so that they don't propagate to the files that `#include` this file?

Original source