diff --git a/src/libs/cplusplus/LookupContext.cpp b/src/libs/cplusplus/LookupContext.cpp
index c09bcf6c7aebe2eb94eded701e59465068f491d4..e28aaa17790f375b8e0906269ba6089cdca56da0 100644
--- a/src/libs/cplusplus/LookupContext.cpp
+++ b/src/libs/cplusplus/LookupContext.cpp
@@ -41,18 +41,11 @@
 
 #include <QtDebug>
 
-QT_BEGIN_NAMESPACE
-uint qHash(const CPlusPlus::LookupItem &key)
-{
-    const uint h1 = qHash(key.type().type());
-    const uint h2 = qHash(key.lastVisibleSymbol());
-    return ((h1 << 16) | (h1 >> 16)) ^ h2;
-}
-QT_END_NAMESPACE
-
 uint CPlusPlus::qHash(const CPlusPlus::LookupItem &key)
 {
-    return QT_PREPEND_NAMESPACE(qHash)(key);
+    const uint h1 = QT_PREPEND_NAMESPACE(qHash)(key.type().type());
+    const uint h2 = QT_PREPEND_NAMESPACE(qHash)(key.lastVisibleSymbol());
+    return ((h1 << 16) | (h1 >> 16)) ^ h2;
 }
 
 using namespace CPlusPlus;
diff --git a/src/libs/cplusplus/LookupContext.h b/src/libs/cplusplus/LookupContext.h
index 1430652107f52c13a8bc570baf709907b766adc3..beb23a833faff2dc88d7883bbd562e1221a19fc3 100644
--- a/src/libs/cplusplus/LookupContext.h
+++ b/src/libs/cplusplus/LookupContext.h
@@ -232,8 +232,10 @@ uint qHash(const CPlusPlus::LookupItem &result);
 
 } // end of namespace CPlusPlus
 
-QT_BEGIN_NAMESPACE
-uint qHash(const CPlusPlus::LookupItem &result);
-QT_END_NAMESPACE
+#if defined(Q_CC_MSVC) && _MSC_VER <= 1300
+//this ensures that code outside QmlJS can use the hash function
+//it also a workaround for some compilers
+inline uint qHash(const CPlusPlus::LookupItem &item) { return CPlusPlus::qHash(item); }
+#endif
 
 #endif // CPLUSPLUS_LOOKUPCONTEXT_H