diff --git a/src/plugins/cppeditor/cppelementevaluator.cpp b/src/plugins/cppeditor/cppelementevaluator.cpp
index aedbfa65f64349495b204f555cd2d9d7e2629c20..4ed8a0b207a89f7033d380e0962e7630df94dbea 100644
--- a/src/plugins/cppeditor/cppelementevaluator.cpp
+++ b/src/plugins/cppeditor/cppelementevaluator.cpp
@@ -192,6 +192,8 @@ void CppElementEvaluator::handleLookupItemMatch(const Snapshot &snapshot,
         } else if (declaration->isDeclaration() && type.isValid()) {
             m_element = QSharedPointer<CppElement>(
                 new CppVariable(declaration, context, lookupItem.scope()));
+        } else if (declaration->isTemplate() && declaration->asTemplate()->declaration()) {
+            m_element = QSharedPointer<CppElement>(new CppTemplate(declaration));
         } else {
             m_element = QSharedPointer<CppElement>(new CppDeclarableElement(declaration));
         }
@@ -491,3 +493,31 @@ CppVariable::CppVariable(Symbol *declaration, const LookupContext &context, Scop
 
 CppVariable::~CppVariable()
 {}
+
+// CppTemplate
+CppTemplate::CppTemplate(CPlusPlus::Symbol *declaration) : CppDeclarableElement(declaration)
+{
+    Template *templateSymbol = declaration->asTemplate();
+    if (templateSymbol->declaration()->isClass() ||
+        templateSymbol->declaration()->isForwardClassDeclaration()) {
+        m_isClassTemplate = true;
+        setHelpCategory(TextEditor::HelpItem::ClassOrNamespace);
+        setTooltip(qualifiedName());
+    } else {
+        m_isClassTemplate = false;
+        setHelpCategory(TextEditor::HelpItem::Function);
+    }
+}
+
+CppTemplate::~CppTemplate()
+{}
+
+bool CppTemplate::isClassTemplate() const
+{
+    return m_isClassTemplate;
+}
+
+bool CppTemplate::isFunctionTemplate() const
+{
+    return !m_isClassTemplate;
+}
diff --git a/src/plugins/cppeditor/cppelementevaluator.h b/src/plugins/cppeditor/cppelementevaluator.h
index 6a34f4666d4109f2ab2e50e6bca4af23115b2d75..f71e8b323e73c40bfb20df7b84e929be4249142d 100644
--- a/src/plugins/cppeditor/cppelementevaluator.h
+++ b/src/plugins/cppeditor/cppelementevaluator.h
@@ -233,6 +233,19 @@ public:
     virtual ~CppVariable();
 };
 
+class CppTemplate : public CppDeclarableElement
+{
+public:
+    CppTemplate(CPlusPlus::Symbol *declaration);
+    virtual ~CppTemplate();
+
+    bool isClassTemplate() const;
+    bool isFunctionTemplate() const;
+
+private:
+    bool m_isClassTemplate;
+};
+
 } // namespace Internal
 } // namespace CppEditor