@@ -142,6 +142,7 @@ class TestSimplifyTemplate : public TestFixture {
142142 TEST_CASE (template102); // #9005
143143 TEST_CASE (template103);
144144 TEST_CASE (template104); // #9021
145+ TEST_CASE (template105); // #9076
145146 TEST_CASE (template_specialization_1); // #7868 - template specialization template <typename T> struct S<C<T>> {..};
146147 TEST_CASE (template_specialization_2); // #7868 - template specialization template <typename T> struct S<C<T>> {..};
147148 TEST_CASE (template_enum); // #6299 Syntax error in complex enum declaration (including template)
@@ -2384,6 +2385,19 @@ class TestSimplifyTemplate : public TestFixture {
23842385 ASSERT_EQUALS (exp, tok (code));
23852386 }
23862387
2388+ void template105 () { // #9076
2389+ const char code[] = " template <template <typename> class TOUT> class ObjectCache;\n "
2390+ " template <template <typename> class TOUT>\n "
2391+ " class ObjectCache { };\n "
2392+ " template <typename T> class Fred {};\n "
2393+ " ObjectCache<Fred> _cache;" ;
2394+ const char exp[] = " class ObjectCache<Fred> ; "
2395+ " template < typename T > class Fred { } ; "
2396+ " ObjectCache<Fred> _cache ; "
2397+ " class ObjectCache<Fred> { } ;" ;
2398+ ASSERT_EQUALS (exp, tok (code));
2399+ }
2400+
23872401 void template_specialization_1 () { // #7868 - template specialization template <typename T> struct S<C<T>> {..};
23882402 const char code[] = " template <typename T> struct C {};\n "
23892403 " template <typename T> struct S {a};\n "
0 commit comments