struct Outer { Outer() {} template struct Inner {}; }; namespace NS { namespace { template struct Struct {}; template struct Union {}; } // namespace } // namespace NS int main() { Outer::Inner oi; NS::Struct ns_struct; NS::Union ns_union; }