Mercurial > hg > CbC > CbC_gcc
view gcc/testsuite/g++.dg/cpp2a/nontype-class23.C @ 145:1830386684a0
gcc-9.2.0
author | anatofuz |
---|---|
date | Thu, 13 Feb 2020 11:34:05 +0900 |
parents | |
children |
line wrap: on
line source
// PR c++/90947 - Simple lookup table of array of strings is miscompiled // Test to verify that the same specializations on non-type template // parameters of class types are in fact treated as the same. Unlike // nontype-class15.C which involves only one-dimensional arrays this // test involves arrays of arrays and arrays of structs. // { dg-do compile { target c++2a } } struct AA3 { const char a[2][2][2]; }; template <AA3> struct BAA3 { }; // Redeclare the same variable using different initialization forms // of the same constant to verify that they are in fact all recognized // as the same. extern BAA3<AA3{{{ "", "" }, { "", "" }}}> baa3; extern BAA3<AA3{{{ "", "" }, { "", { 0, 0 } }}}> baa3; extern BAA3<AA3{{{ "", "" }, { "", { 0 } }}}> baa3; extern BAA3<AA3{{{ "", "" }, { "", {} }}}> baa3; extern BAA3<AA3{{{ "", "" }, { "" }}}> baa3; extern BAA3<AA3{{{ "", "" }, { { 0, 0 } }}}> baa3; extern BAA3<AA3{{{ "", "" }, { { 0 } }}}> baa3; extern BAA3<AA3{{{ "", "" }, { {} }}}> baa3; extern BAA3<AA3{{{ "", "" }, { }}}> baa3; extern BAA3<AA3{{{ "", "" }}}> baa3; extern BAA3<AA3{{{ "", { 0, 0 } }}}> baa3; extern BAA3<AA3{{{ "", { 0 } }}}> baa3; extern BAA3<AA3{{{ "", {} }}}> baa3; extern BAA3<AA3{{{ "" }}}> baa3; extern BAA3<AA3{{{ { 0, 0 } }}}> baa3; extern BAA3<AA3{{{ { 0 } }}}> baa3; extern BAA3<AA3{{{ {} }}}> baa3; extern BAA3<AA3{{{ }}}> baa3; extern BAA3<AA3{{ }}> baa3; extern BAA3<AA3{ }> baa3; extern BAA3<AA3{{{ "", "" }, { "", "1" }}}> baa3_1; extern BAA3<AA3{{{ "", "" }, { "", { '1', 0 } }}}> baa3_1; extern BAA3<AA3{{{ "", "" }, { "", { '1' } }}}> baa3_1; extern BAA3<AA3{{{ "", "" }, { "1", {} }}}> baa3_2; extern BAA3<AA3{{{ "", "" }, { "1" }}}> baa3_2; extern BAA3<AA3{{{ "", "" }, { { '1', 0 } }}}> baa3_2; extern BAA3<AA3{{{ "", "" }, { { '1' } }}}> baa3_2; extern BAA3<AA3{{{ "", "1" }}}> baa3_3; extern BAA3<AA3{{{ "", { '1', 0 } }}}> baa3_3; extern BAA3<AA3{{{ "", { '1' } }}}> baa3_3; extern BAA3<AA3{{{ "1" }}}> baa3_4; extern BAA3<AA3{{{ { '1', 0 } }}}> baa3_4; extern BAA3<AA3{{{ { '1' } }}}> baa3_4; struct AS2 { struct S { const char a[2], *p; } a[2]; }; template <AS2> struct BAS2 { }; extern BAS2<AS2{{{ "", 0 }, { "", 0 }}}> bas2; extern BAS2<AS2{{{ "", 0 }, { {}, 0 }}}> bas2; extern BAS2<AS2{{{ "", 0 }, { "" }}}> bas2; extern BAS2<AS2{{{ "", 0 }, { {} }}}> bas2; extern BAS2<AS2{{{ "", 0 }, { }}}> bas2; extern BAS2<AS2{{{ "", 0 }}}> bas2; extern BAS2<AS2{{{ {}, 0 }}}> bas2; extern BAS2<AS2{{{ "" }}}> bas2; extern BAS2<AS2{{{ {} }}}> bas2; extern BAS2<AS2{{{ }}}> bas2; extern BAS2<AS2{{ }}> bas2; extern BAS2<AS2{ }> bas2; struct AS2_2 { struct S { const char a[2], *p; } a[2][2]; }; template <AS2_2> struct BAS2_2 { }; extern BAS2_2<AS2_2{{{{ "", 0 }, { "", 0 } }, { { "", 0 }, { "", 0 }}}}> b2_2; extern BAS2_2<AS2_2{{{{ "", 0 }, { "", 0 } }, { { "", 0 }, { "" }}}}> b2_2; extern BAS2_2<AS2_2{{{{ "", 0 }, { "", 0 } }, { { "", 0 }, { {} }}}}> b2_2; extern BAS2_2<AS2_2{{{{ "", 0 }, { "", 0 } }, { { "", 0 }, { }}}}> b2_2; extern BAS2_2<AS2_2{{{{ "", 0 }, { "", 0 } }, { { "", 0 } }}}> b2_2; extern BAS2_2<AS2_2{{{{ "", 0 }, { "", 0 } }, { { "" } }}}> b2_2; extern BAS2_2<AS2_2{{{{ "", 0 }, { "", 0 } }, { { {} } }}}> b2_2; extern BAS2_2<AS2_2{{{{ "", 0 }, { "", 0 } }, { { }}}}> b2_2; extern BAS2_2<AS2_2{{{{ "", 0 }, { "", 0 } }, { }}}> b2_2; extern BAS2_2<AS2_2{{{{ "", 0 }, { "", 0 }}}}> b2_2; extern BAS2_2<AS2_2{{{{ "", 0 }, { "" }}}}> b2_2; extern BAS2_2<AS2_2{{{{ "", 0 }, { {} }}}}> b2_2; extern BAS2_2<AS2_2{{{{ "", 0 }, { }}}}> b2_2; extern BAS2_2<AS2_2{{{{ "", 0 }}}}> b2_2; extern BAS2_2<AS2_2{{{{ "" }}}}> b2_2; extern BAS2_2<AS2_2{{{{ {} }}}}> b2_2; extern BAS2_2<AS2_2{{{{ }}}}> b2_2; extern BAS2_2<AS2_2{{{ }}}> b2_2; extern BAS2_2<AS2_2{{ }}> b2_2; extern BAS2_2<AS2_2{ }> b2_2;