1109998Smarkm// PR c++/23667 2109998Smarkm 3109998Smarkmtemplate<int dummy> 4109998Smarkm struct X 5109998Smarkm { 6109998Smarkm static const int n_primes = 256; 7109998Smarkm static const unsigned long primes[n_primes + 1]; 8109998Smarkm }; 9215697Ssimon 10109998Smarkmtemplate<int dummy> 11215697Ssimon const int X<dummy>::n_primes; 12215697Ssimon 13109998Smarkmtemplate<int dummy> 14109998Smarkm const unsigned long X<dummy>::primes[n_primes + 1] = 15109998Smarkm { 16109998Smarkm 2ul, 3ul, 5ul, 7ul, 11ul, 13ul, 17ul, 19ul, 23ul, 29ul, 31ul, 17109998Smarkm 37ul, 41ul, 43ul, 47ul, 53ul, 59ul, 61ul, 67ul, 71ul, 73ul, 79ul, 18109998Smarkm 83ul, 89ul, 97ul, 103ul, 109ul, 113ul, 127ul, 137ul, 139ul, 149ul, 19109998Smarkm 157ul, 167ul, 179ul, 193ul, 199ul, 211ul, 227ul, 241ul, 257ul, 20109998Smarkm 277ul, 293ul, 313ul, 337ul, 359ul, 383ul, 409ul, 439ul, 467ul, 21109998Smarkm 503ul, 541ul, 577ul, 619ul, 661ul, 709ul, 761ul, 823ul, 887ul, 22109998Smarkm 953ul, 1031ul, 1109ul, 1193ul, 1289ul, 1381ul, 1493ul, 1613ul, 23109998Smarkm 1741ul, 1879ul, 2029ul, 2179ul, 2357ul, 2549ul, 2753ul, 2971ul, 24109998Smarkm 3209ul, 3469ul, 3739ul, 4027ul, 4349ul, 4703ul, 5087ul, 5503ul, 25109998Smarkm 5953ul, 6427ul, 6949ul, 7517ul, 8123ul, 8783ul, 9497ul, 10273ul, 26109998Smarkm 11113ul, 12011ul, 12983ul, 14033ul, 15173ul, 16411ul, 17749ul, 27109998Smarkm 19183ul, 20753ul, 22447ul, 24281ul, 26267ul, 28411ul, 30727ul, 28109998Smarkm 33223ul, 35933ul, 38873ul, 42043ul, 45481ul, 49201ul, 53201ul, 29109998Smarkm 57557ul, 62233ul, 67307ul, 72817ul, 78779ul, 85229ul, 92203ul, 30109998Smarkm 99733ul, 107897ul, 116731ul, 126271ul, 136607ul, 147793ul, 31109998Smarkm 159871ul, 172933ul, 187091ul, 202409ul, 218971ul, 236897ul, 32109998Smarkm 256279ul, 277261ul, 299951ul, 324503ul, 351061ul, 379787ul, 33109998Smarkm 410857ul, 444487ul, 480881ul, 520241ul, 562841ul, 608903ul, 34109998Smarkm 658753ul, 712697ul, 771049ul, 834181ul, 902483ul, 976369ul, 35160814Ssimon 1056323ul, 1142821ul, 1236397ul, 1337629ul, 1447153ul, 1565659ul, 36160814Ssimon 1693859ul, 1832561ul, 1982627ul, 2144977ul, 2320627ul, 2510653ul, 37160814Ssimon 2716249ul, 2938679ul, 3179303ul, 3439651ul, 3721303ul, 4026031ul, 38160814Ssimon 4355707ul, 4712381ul, 5098259ul, 5515729ul, 5967347ul, 6456007ul, 39109998Smarkm 6984629ul, 7556579ul, 8175383ul, 8844859ul, 9569143ul, 10352717ul, 40160814Ssimon 11200489ul, 12117689ul, 13109983ul, 14183539ul, 15345007ul, 41160814Ssimon 16601593ul, 17961079ul, 19431899ul, 21023161ul, 22744717ul, 42160814Ssimon 24607243ul, 26622317ul, 28802401ul, 31160981ul, 33712729ul, 43160814Ssimon 36473443ul, 39460231ul, 42691603ul, 46187573ul, 49969847ul, 44109998Smarkm 54061849ul, 58488943ul, 63278561ul, 68460391ul, 74066549ul, 45109998Smarkm 80131819ul, 86693767ul, 93793069ul, 101473717ul, 109783337ul, 46109998Smarkm 118773397ul, 128499677ul, 139022417ul, 150406843ul, 162723577ul, 47109998Smarkm 176048909ul, 190465427ul, 206062531ul, 222936881ul, 241193053ul, 48109998Smarkm 260944219ul, 282312799ul, 305431229ul, 330442829ul, 357502601ul, 49109998Smarkm 386778277ul, 418451333ul, 452718089ul, 489790921ul, 529899637ul, 50109998Smarkm 573292817ul, 620239453ul, 671030513ul, 725980837ul, 785430967ul, 51109998Smarkm 849749479ul, 919334987ul, 994618837ul, 1076067617ul, 1164186217ul, 52109998Smarkm 1259520799ul, 1362662261ul, 1474249943ul, 1594975441ul, 53109998Smarkm 1725587117ul, 1866894511ul, 2019773507ul, 2185171673ul, 54109998Smarkm 2364114217ul, 2557710269ul, 2767159799ul, 2993761039ul, 55109998Smarkm 3238918481ul, 3504151727ul, 3791104843ul, 4101556399ul, 56109998Smarkm 4294967291ul, 57109998Smarkm 4294967291ul // sentinel so we don't have to test result of 58109998Smarkm // lower_bound 59109998Smarkm }; 60109998Smarkm 61109998Smarkmtemplate<bool b> 62109998Smarkm struct static_assert; 63109998Smarkm 64template<> 65 struct static_assert<true> { }; 66 67int main() 68{ 69 static_assert< X<0>::n_primes == 256 >(); 70} 71