diff --git a/src/libs/cplusplus/BackwardsScanner.cpp b/src/libs/cplusplus/BackwardsScanner.cpp
index 32efdf158ee2e0f9a53ca375d934545873655136..da12f3e599a2b6f039a6fdcc1479a9900d71045c 100644
--- a/src/libs/cplusplus/BackwardsScanner.cpp
+++ b/src/libs/cplusplus/BackwardsScanner.cpp
@@ -99,6 +99,12 @@ int BackwardsScanner::startPosition() const
 QString BackwardsScanner::text() const
 { return _text; }
 
+QString BackwardsScanner::mid(int index) const
+{
+    const SimpleToken &firstToken = _tokens.at(index + _offset);
+    return _text.mid(firstToken.begin());
+}
+
 QString BackwardsScanner::text(int index) const
 {
     const SimpleToken &firstToken = _tokens.at(index + _offset);
diff --git a/src/libs/cplusplus/BackwardsScanner.h b/src/libs/cplusplus/BackwardsScanner.h
index a109d2cab31f59edb8d4597f0d3219763ed2578e..b2e7414951e12d62d9d32d3dd5d0b08c2d0e1fae 100644
--- a/src/libs/cplusplus/BackwardsScanner.h
+++ b/src/libs/cplusplus/BackwardsScanner.h
@@ -51,9 +51,10 @@ public:
     int startPosition() const;
 
     QString text() const;
+    QString mid(int index) const;
+
     QString text(int index) const;
     QStringRef textRef(int index) const;
-
     // 1-based
     SimpleToken LA(int index) const;
 
diff --git a/src/libs/cplusplus/ExpressionUnderCursor.cpp b/src/libs/cplusplus/ExpressionUnderCursor.cpp
index e64444190254c832ea15e726ca72fd677f6d2541..8016f537bb2de71be26d4f2688005784700971e4 100644
--- a/src/libs/cplusplus/ExpressionUnderCursor.cpp
+++ b/src/libs/cplusplus/ExpressionUnderCursor.cpp
@@ -150,7 +150,7 @@ QString ExpressionUnderCursor::operator()(const QTextCursor &cursor)
     if (i == initialSize)
         return QString();
 
-    return scanner.text(i);
+    return scanner.mid(i);
 }
 
 int ExpressionUnderCursor::startOfFunctionCall(const QTextCursor &cursor) const