diff --git a/src/libs/cplusplus/CppDocument.cpp b/src/libs/cplusplus/CppDocument.cpp
index eb17e4c9d77386ccd79129f424859e56208aeb7e..cd7c0feb5895c1283e5cb0a119f8bd805c2d4d9e 100644
--- a/src/libs/cplusplus/CppDocument.cpp
+++ b/src/libs/cplusplus/CppDocument.cpp
@@ -742,14 +742,17 @@ Symbol *Snapshot::findMatchingDefinition(Symbol *symbol) const
 
             QList<Function *> viableFunctions;
 
+            ClassOrNamespace *enclosingType = context.lookupType(declaration);
+            if (! enclosingType)
+                continue; // nothing to do
+
             foreach (Function *fun, result) {
                 const QList<Symbol *> declarations = context.lookup(fun->name(), fun->scope());
+                if (declarations.isEmpty())
+                    continue;
 
-                if (declarations.contains(declaration))
+                else if (enclosingType == context.lookupType(declarations.first()))
                     viableFunctions.append(fun);
-
-                else if (false)
-                    qDebug() << "does not contain" << declaration->fileName() << declaration->line() << declaration->column();
             }
 
             if (viableFunctions.isEmpty())