diff --git a/src/libs/cplusplus/LookupContext.cpp b/src/libs/cplusplus/LookupContext.cpp
index 64f6bc1e012532105259f4f39852acb5aa698af8..f5a0edd66bc9c780cdf285e76e81a9c69dbc0e18 100644
--- a/src/libs/cplusplus/LookupContext.cpp
+++ b/src/libs/cplusplus/LookupContext.cpp
@@ -223,14 +223,13 @@ QList<Symbol *> LookupContext::resolve(Name *name, const QList<Scope *> &visible
                         continue;
 
                     if (q->nameCount() > 1) {
-                        Name *classOrNamespaceName = 0;
-
-                        if (q->nameCount() == 1)
-                            classOrNamespaceName = q->nameAt(0);
-                        else
-                            classOrNamespaceName = control()->qualifiedNameId(q->names(),
-                                                                              q->nameCount() - 1);
+                        Name *classOrNamespaceName = control()->qualifiedNameId(q->names(),
+                                                                                q->nameCount() - 1);
 
+                        if (Identifier *classOrNamespaceNameId = identifier(classOrNamespaceName)) {
+                            if (classOrNamespaceNameId->isEqualTo(id))
+                                continue;
+                        }
 
                         const QList<Symbol *> resolvedClassOrNamespace =
                                 resolveClassOrNamespace(classOrNamespaceName, visibleScopes);
@@ -455,7 +454,7 @@ void LookupContext::expandFunction(Scope *scope,
         expandedScopes->append(function->arguments());
     if (QualifiedNameId *q = function->name()->asQualifiedNameId()) {
         Name *nestedNameSpec = 0;
-        if (q->nameCount() == 1 && q->isGlobal())
+        if (q->nameCount() == 1)
             nestedNameSpec = q->nameAt(0);
         else
             nestedNameSpec = control()->qualifiedNameId(q->names(), q->nameCount() - 1,