Skip to content

Commit 2de3dbc

Browse files
Update testsimplifytemplate.cpp
1 parent 0677d78 commit 2de3dbc

1 file changed

Lines changed: 35 additions & 0 deletions

File tree

test/testsimplifytemplate.cpp

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4950,6 +4950,41 @@ class TestSimplifyTemplate : public TestFixture {
49504950
"return 0 ; "
49514951
"}", tok(code));
49524952
}
4953+
{
4954+
// #14975
4955+
const char code[] = "template <typename T, int N>\n"
4956+
"struct I;\n"
4957+
"template <typename T,\n"
4958+
" int N = (sizeof(T) > 8 ? 8 : sizeof(T))>\n"
4959+
" struct A {\n"
4960+
" I<T, N> begin() { return I<T, N>(this); }\n"
4961+
"};\n"
4962+
"template <typename T, int N>\n"
4963+
"struct I {\n"
4964+
" I(A<T, N>* a);\n"
4965+
" A<T, N>* p;\n"
4966+
"};\n"
4967+
"template <typename T, int N>\n"
4968+
"inline I<T, N>::I(A<T, N>* a) : p(a) {}\n"
4969+
"void f() { A<X> x; }\n";
4970+
TODO_ASSERT_EQUALS(
4971+
"Fix template arg",
4972+
"template < typename T , int N > struct I ; "
4973+
"struct A<X,(sizeof(X)>8)> ; "
4974+
"template < typename T , int N > struct I { "
4975+
"I ( A < T , N > * a ) ; "
4976+
"A < T , N > * p ; "
4977+
"} ; "
4978+
"I<X,(sizeof(X)>8)> :: I<X,(sizeof(X)>8)> ( A < X , ( sizeof ( X ) > 8 ) > * a ) ; "
4979+
"void f ( ) { "
4980+
"A<X,(sizeof(X)>8)> x ; "
4981+
"} "
4982+
"struct A<X,(sizeof(X)>8)> { "
4983+
"I<X,(sizeof(X)>8)> begin ( ) { return I<X,(sizeof(X)>8)> ( this ) ; } "
4984+
"} ; "
4985+
"I<X,(sizeof(X)>8)> :: I<X,(sizeof(X)>8)> ( A < X , ( sizeof ( X ) > 8 ) > * a ) : p ( a ) { }",
4986+
tok(code));
4987+
}
49534988
}
49544989

49554990
void template_forward_declared_default_parameter() {

0 commit comments

Comments
 (0)