Solving the problem of using directives in a header file with a macro. Is this stupid?
You're writing a lot of code, but what is the benefit?  How is this any worse?

namespace MyNamespace {
    namespace ImplDetails {
        // Non-public code.
    }
    // Public code.
}


Yes, people can access things in ImplDetails, but you can't get around that sanely.  Obscuring namespace names is only going to hurt compatibility (when a namespace gets renamed after you insert a new one, which will happen eventually).  If people want to access your internals, they will.