FWIW, I'm using inline namespaces (or emulation in C++03) in Boost.Log, although I don't inject Boost version. Works quite well in detecting configuration mismatch cases, when user's code is compiled in a mode incompatible with the compiled library. I'm not sure how useful this would be with TypeTraits though, given that the traits are compile-time constructs and ABI compatibility is not an issue.
I think you may have hit the nail on head there: are inline namespaces of any use for header-only code? I can see the logic for mangling the names when you're linking to an external lib, but for something like type_traits we can just as well leave things as they are and use a nested namespace for any "archived" old versions of the code. John.