@@ -216,6 +216,7 @@ class TestSimplifyTemplate : public TestFixture {
216
216
TEST_CASE (template177);
217
217
TEST_CASE (template178);
218
218
TEST_CASE (template179);
219
+ TEST_CASE (template180);
219
220
TEST_CASE (template_specialization_1); // #7868 - template specialization template <typename T> struct S<C<T>> {..};
220
221
TEST_CASE (template_specialization_2); // #7868 - template specialization template <typename T> struct S<C<T>> {..};
221
222
TEST_CASE (template_specialization_3);
@@ -4574,6 +4575,24 @@ class TestSimplifyTemplate : public TestFixture {
4574
4575
ASSERT_EQUALS (exp , tok (code));
4575
4576
}
4576
4577
4578
+ void template180 () {
4579
+ const char code[] = " template<int C>\n " // #13680
4580
+ " int f() {\n "
4581
+ " return dostuff(C);\n "
4582
+ " }\n "
4583
+ " void g() {\n "
4584
+ " f<static_cast<int>(0U)>();\n "
4585
+ " }\n " ;
4586
+ const char exp [] = " int f<static_cast<int>(0U)> ( ) ; "
4587
+ " void g ( ) { "
4588
+ " f<static_cast<int>(0U)> ( ) ; "
4589
+ " } "
4590
+ " int f<static_cast<int>(0U)> ( ) { "
4591
+ " return dostuff ( static_cast < int > ( 0U ) ) ; "
4592
+ " }" ;
4593
+ ASSERT_EQUALS (exp , tok (code));
4594
+ }
4595
+
4577
4596
void template_specialization_1 () { // #7868 - template specialization template <typename T> struct S<C<T>> {..};
4578
4597
const char code[] = " template <typename T> struct C {};\n "
4579
4598
" template <typename T> struct S {a};\n "
@@ -6433,11 +6452,11 @@ class TestSimplifyTemplate : public TestFixture {
6433
6452
" typedef Derived<C<static_cast<int>(-1)> > C_;\n "
6434
6453
" class C3 { C_ c; };" ;
6435
6454
const char expected[] = " template < int N > class C { } ; "
6436
- " class Base<C<static_cast<int>-1 >> ; "
6437
- " class Derived<C<static_cast<int>-1 >> ; "
6438
- " class C3 { Derived<C<static_cast<int>-1 >> c ; } ; "
6439
- " class Derived<C<static_cast<int>-1 >> : private Base<C<static_cast<int>-1 >> { } ; "
6440
- " class Base<C<static_cast<int>-1 >> { } ;" ;
6455
+ " class Base<C<static_cast<int>(-1) >> ; "
6456
+ " class Derived<C<static_cast<int>(-1) >> ; "
6457
+ " class C3 { Derived<C<static_cast<int>(-1) >> c ; } ; "
6458
+ " class Derived<C<static_cast<int>(-1) >> : private Base<C<static_cast<int>(-1) >> { } ; "
6459
+ " class Base<C<static_cast<int>(-1) >> { } ;" ;
6441
6460
ASSERT_EQUALS (expected, tok (code));
6442
6461
}
6443
6462
0 commit comments