@@ -216,6 +216,7 @@ class TestSimplifyTemplate : public TestFixture {
216216 TEST_CASE (template176); // #11146
217217 TEST_CASE (template177);
218218 TEST_CASE (template178);
219+ TEST_CASE (template179);
219220 TEST_CASE (template_specialization_1); // #7868 - template specialization template <typename T> struct S<C<T>> {..};
220221 TEST_CASE (template_specialization_2); // #7868 - template specialization template <typename T> struct S<C<T>> {..};
221222 TEST_CASE (template_specialization_3);
@@ -4547,6 +4548,26 @@ class TestSimplifyTemplate : public TestFixture {
45474548 ASSERT_EQUALS (exp2, tok (code2));
45484549 }
45494550
4551+ void template179 () {
4552+ const char code[] = " template <typename T, typename C>\n " // #13498
4553+ " struct B {\n "
4554+ " int a;\n "
4555+ " int b;\n "
4556+ " };\n "
4557+ " template <typename T>\n "
4558+ " struct B<T, void> {\n "
4559+ " int a;\n "
4560+ " };\n "
4561+ " void f() {\n "
4562+ " B<int, int>{ 0, {} };\n "
4563+ " }\n " ;
4564+ const char exp[] = " struct B<int,int> ; "
4565+ " template < typename T > struct B < T , void > { int a ; } ; "
4566+ " void f ( ) { B<int,int> { 0 , { } } ; } "
4567+ " struct B<int,int> { int a ; int b ; } ;" ;
4568+ ASSERT_EQUALS (exp, tok (code));
4569+ }
4570+
45504571 void template_specialization_1 () { // #7868 - template specialization template <typename T> struct S<C<T>> {..};
45514572 const char code[] = " template <typename T> struct C {};\n "
45524573 " template <typename T> struct S {a};\n "
0 commit comments