diff --git a/src/plugins/cpptools/cppfindreferences.cpp b/src/plugins/cpptools/cppfindreferences.cpp
index faa7fc944a8bc27ffa621cabfdd5bdb1694c996f..1d2fdba2f6b11cbba625f2c303af557b3135818c 100644
--- a/src/plugins/cpptools/cppfindreferences.cpp
+++ b/src/plugins/cpptools/cppfindreferences.cpp
@@ -168,13 +168,37 @@ protected:
         return LookupContext(lastVisibleSymbol, _exprDoc, _doc, _snapshot);
     }
 
+    void ensureNameIsValid(NameAST *ast)
+    {
+        if (ast && ! ast->name)
+            ast->name = _sem.check(ast, /*scope = */ 0);
+    }
+
+    virtual bool visit(MemInitializerAST *ast)
+    {
+        if (ast->name && ast->name->asSimpleName() != 0) {
+            ensureNameIsValid(ast->name);
+
+            SimpleNameAST *simple = ast->name->asSimpleName();
+            qDebug() << identifier(simple->identifier_token) << _id;
+            if (identifier(simple->identifier_token) == _id) {
+                LookupContext context = currentContext(ast);
+                const QList<Symbol *> candidates = context.resolve(simple->name);
+                if (checkCandidates(candidates))
+                    reportResult(simple->identifier_token);
+            }
+        }
+        accept(ast->expression);
+        return false;
+    }
+
     virtual bool visit(PostfixExpressionAST *ast)
     {
         _postfixExpressionStack.append(ast);
         return true;
     }
 
-    virtual void endVisit(PostfixExpressionAST *ast)
+    virtual void endVisit(PostfixExpressionAST *)
     {
         _postfixExpressionStack.removeLast();
     }