diff --git a/src/plugins/cppeditor/cppeditorplugin.h b/src/plugins/cppeditor/cppeditorplugin.h
index c0fb4094c69ac9523fd41d19e277c7447400f56a..50b5bc141be7e5604b6cb07981fa81e03d150b38 100644
--- a/src/plugins/cppeditor/cppeditorplugin.h
+++ b/src/plugins/cppeditor/cppeditorplugin.h
@@ -209,6 +209,7 @@ private slots:
     void test_quickfix_AssignToLocalVariable_memberFunction();
     void test_quickfix_AssignToLocalVariable_staticMemberFunction();
     void test_quickfix_AssignToLocalVariable_newExpression();
+    void test_quickfix_AssignToLocalVariable_templates();
     void test_quickfix_AssignToLocalVariable_noInitializationList();
     void test_quickfix_AssignToLocalVariable_noVoidFunction();
     void test_quickfix_AssignToLocalVariable_noVoidMemberFunction();
diff --git a/src/plugins/cppeditor/cppquickfix_test.cpp b/src/plugins/cppeditor/cppquickfix_test.cpp
index 1ce9ed1aa7fce2d8ed25b30fd84ac974e9120403..dd22a5d0892961c79a2013d3789d969b5f271ab1 100644
--- a/src/plugins/cppeditor/cppquickfix_test.cpp
+++ b/src/plugins/cppeditor/cppquickfix_test.cpp
@@ -2507,6 +2507,44 @@ void CppEditorPlugin::test_quickfix_AssignToLocalVariable_newExpression()
     data.run(&factory);
 }
 
+void CppEditorPlugin::test_quickfix_AssignToLocalVariable_templates()
+{
+
+    QList<TestDocumentPtr> testFiles;
+    QByteArray original;
+    QByteArray expected;
+
+    // Header File
+    original =
+        "template <typename T>\n"
+        "class List {\n"
+        "public:\n"
+        "    T first();"
+        "};\n"
+        ;
+    expected = original + "\n";
+    testFiles << TestDocument::create(original, expected, QLatin1String("file.h"));
+
+    // Source File
+    original =
+        "#include \"file.h\"\n"
+        "void foo() {\n"
+        "    List<int> list;\n"
+        "    li@st.first();\n"
+        "}";
+    expected =
+        "#include \"file.h\"\n"
+        "void foo() {\n"
+        "    List<int> list;\n"
+        "    int localFirst = list.first();\n"
+        "}\n";
+    testFiles << TestDocument::create(original, expected, QLatin1String("file.cpp"));
+
+    AssignToLocalVariable factory;
+    TestCase data(testFiles);
+    data.run(&factory);
+}
+
 /// Check: No trigger for function inside member initialization list.
 void CppEditorPlugin::test_quickfix_AssignToLocalVariable_noInitializationList()
 {
diff --git a/src/plugins/cppeditor/cppquickfixes.cpp b/src/plugins/cppeditor/cppquickfixes.cpp
index cc11e9aee1178ce6bbac63ed9f1b90d04d22ebbe..14456b0eb2462297098b9ad2a76f9139cd9940aa 100644
--- a/src/plugins/cppeditor/cppquickfixes.cpp
+++ b/src/plugins/cppeditor/cppquickfixes.cpp
@@ -4081,6 +4081,7 @@ public:
         TypeOfExpression typeOfExpression;
         typeOfExpression.init(assistInterface()->semanticInfo().doc, snapshot(),
                               assistInterface()->context().bindings());
+        typeOfExpression.setExpandTemplates(true);
         Scope *scope = file->scopeAt(m_ast->firstToken());
         const QList<LookupItem> result = typeOfExpression(file->textOf(m_ast).toUtf8(),
                                                           scope, TypeOfExpression::Preprocess);
@@ -4220,6 +4221,7 @@ void AssignToLocalVariable::match(const CppQuickFixInterface &interface, QuickFi
         TypeOfExpression typeOfExpression;
         typeOfExpression.init(interface->semanticInfo().doc, interface->snapshot(),
                               interface->context().bindings());
+        typeOfExpression.setExpandTemplates(true);
 
         // If items are empty, AssignToLocalVariableOperation will fail.
         items = typeOfExpression(file->textOf(outerAST).toUtf8(),