As the comment says, in the first case, you are actually exporting the name from the namespace to the one that contains the using declaration, while in the second case you define an alias in the namespace that contains using , which points to that particular name and its surrounding namespace .
As an example with the second expression, you can define aliases, such as the following:
using Foo = Bar<MyClass>; template <class C> using Foo = Bar<C, MyClass>;
While the first using statement cannot, it serves just to make the names available in different spaces than those that contain them.
See here for more information on using directives using declarations and aliases (types and templates).
source share