diff --git a/src/libs/cplusplus/LookupContext.cpp b/src/libs/cplusplus/LookupContext.cpp
index 5c935eb6a11babaaa9df83444c01264a570187ca..dc8d3c06d59ed7d665ecc79710e6f35ed0d29e87 100644
--- a/src/libs/cplusplus/LookupContext.cpp
+++ b/src/libs/cplusplus/LookupContext.cpp
@@ -449,6 +449,9 @@ void ClassOrNamespace::lookup_helper(const Name *name, ClassOrNamespace *binding
         const Identifier *nameId = name->identifier();
 
         foreach (Symbol *s, binding->symbols()) {
+            if (s->isFriend())
+                continue;
+
             if (ScopedSymbol *scoped = s->asScopedSymbol()) {
                 if (Class *klass = scoped->asClass()) {
                     if (const Identifier *id = klass->identifier()) {
@@ -486,6 +489,8 @@ void CreateBindings::lookupInScope(const Name *name, Scope *scope,
         for (Symbol *s = scope->lookat(op->kind()); s; s = s->next()) {
             if (! s->name())
                 continue;
+            else if (s->isFriend())
+                continue;
             else if (! s->name()->isEqualTo(op))
                 continue;
 
@@ -497,7 +502,9 @@ void CreateBindings::lookupInScope(const Name *name, Scope *scope,
 
     } else if (const Identifier *id = name->identifier()) {
         for (Symbol *s = scope->lookat(id); s; s = s->next()) {
-            if (! id->isEqualTo(s->identifier()))
+            if (s->isFriend())
+                continue; // skip friends
+            else if (! id->isEqualTo(s->identifier()))
                 continue;
             else if (s->name()->isQualifiedNameId())
                 continue; // skip qualified ids.