| // Written by David Hallas to trigger this bug in Valgrind: |
| // https://bugs.kde.org/show_bug.cgi?id=359133 |
| |
| #define CONCAT2(x, y) x##y |
| #define CONCAT(x, y) CONCAT2(x, y) |
| |
| #define AllLetters ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyzABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyzABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyzABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyzABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyzABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyzABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyzABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyzABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyzABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyzABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyzABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyzABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyzABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyzABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyzABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyzABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyzABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyzABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyzABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyzABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyzABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyzABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyzABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyzABCDEFGHIJKLMNOPQRSTUVXYZ |
| #define TemplateName(name) CONCAT(AllLetters, name) |
| #define TemplateDef(name) class TemplateName(name) {}; |
| |
| TemplateDef(1) |
| TemplateDef(2) |
| TemplateDef(3) |
| TemplateDef(4) |
| TemplateDef(5) |
| TemplateDef(6) |
| TemplateDef(7) |
| TemplateDef(8) |
| TemplateDef(9) |
| TemplateDef(10) |
| TemplateDef(11) |
| TemplateDef(12) |
| TemplateDef(13) |
| TemplateDef(14) |
| TemplateDef(15) |
| TemplateDef(16) |
| TemplateDef(17) |
| TemplateDef(18) |
| TemplateDef(19) |
| TemplateDef(20) |
| TemplateDef(21) |
| TemplateDef(22) |
| TemplateDef(23) |
| TemplateDef(24) |
| TemplateDef(25) |
| TemplateDef(26) |
| TemplateDef(27) |
| TemplateDef(28) |
| TemplateDef(29) |
| TemplateDef(30) |
| TemplateDef(31) |
| TemplateDef(32) |
| TemplateDef(33) |
| TemplateDef(34) |
| TemplateDef(35) |
| TemplateDef(36) |
| TemplateDef(37) |
| TemplateDef(38) |
| TemplateDef(39) |
| TemplateDef(40) |
| TemplateDef(41) |
| TemplateDef(42) |
| TemplateDef(43) |
| TemplateDef(44) |
| TemplateDef(45) |
| TemplateDef(46) |
| TemplateDef(47) |
| TemplateDef(48) |
| TemplateDef(49) |
| TemplateDef(50) |
| |
| class MyTemplate { |
| public: |
| template<typename... T> |
| void foo(); |
| }; |
| |
| template<> |
| void MyTemplate::foo< |
| TemplateName(1), |
| TemplateName(2), |
| TemplateName(3), |
| TemplateName(4), |
| TemplateName(5), |
| TemplateName(6), |
| TemplateName(7), |
| TemplateName(8), |
| TemplateName(9), |
| TemplateName(10), |
| TemplateName(11), |
| TemplateName(12), |
| TemplateName(13), |
| TemplateName(14), |
| TemplateName(15), |
| TemplateName(16), |
| TemplateName(17), |
| TemplateName(18), |
| TemplateName(19), |
| TemplateName(20), |
| TemplateName(21), |
| TemplateName(22), |
| TemplateName(23), |
| TemplateName(24), |
| TemplateName(25), |
| TemplateName(26), |
| TemplateName(27), |
| TemplateName(28), |
| TemplateName(29), |
| TemplateName(30), |
| TemplateName(31), |
| TemplateName(32), |
| TemplateName(33), |
| TemplateName(34), |
| TemplateName(35), |
| TemplateName(36), |
| TemplateName(37), |
| TemplateName(38), |
| TemplateName(39), |
| TemplateName(40), |
| TemplateName(41), |
| TemplateName(42), |
| TemplateName(43), |
| TemplateName(44), |
| TemplateName(45), |
| TemplateName(46), |
| TemplateName(47), |
| TemplateName(48), |
| TemplateName(49), |
| TemplateName(50) |
| >(); |
| |
| template<> |
| void MyTemplate::foo< |
| TemplateName(1), |
| TemplateName(2), |
| TemplateName(3), |
| TemplateName(4), |
| TemplateName(5), |
| TemplateName(6), |
| TemplateName(7), |
| TemplateName(8), |
| TemplateName(9), |
| TemplateName(10), |
| TemplateName(11), |
| TemplateName(12), |
| TemplateName(13), |
| TemplateName(14), |
| TemplateName(15), |
| TemplateName(16), |
| TemplateName(17), |
| TemplateName(18), |
| TemplateName(19), |
| TemplateName(20), |
| TemplateName(21), |
| TemplateName(22), |
| TemplateName(23), |
| TemplateName(24), |
| TemplateName(25), |
| TemplateName(26), |
| TemplateName(27), |
| TemplateName(28), |
| TemplateName(29), |
| TemplateName(30), |
| TemplateName(31), |
| TemplateName(32), |
| TemplateName(33), |
| TemplateName(34), |
| TemplateName(35), |
| TemplateName(36), |
| TemplateName(37), |
| TemplateName(38), |
| TemplateName(39), |
| TemplateName(40), |
| TemplateName(41), |
| TemplateName(42), |
| TemplateName(43), |
| TemplateName(44), |
| TemplateName(45), |
| TemplateName(46), |
| TemplateName(47), |
| TemplateName(48), |
| TemplateName(49), |
| TemplateName(50) |
| >() |
| { |
| } |
| |
| int main(int argc, char* argv[]) |
| { |
| MyTemplate instance; |
| instance.foo< |
| TemplateName(1), |
| TemplateName(2), |
| TemplateName(3), |
| TemplateName(4), |
| TemplateName(5), |
| TemplateName(6), |
| TemplateName(7), |
| TemplateName(8), |
| TemplateName(9), |
| TemplateName(10), |
| TemplateName(11), |
| TemplateName(12), |
| TemplateName(13), |
| TemplateName(14), |
| TemplateName(15), |
| TemplateName(16), |
| TemplateName(17), |
| TemplateName(18), |
| TemplateName(19), |
| TemplateName(20), |
| TemplateName(21), |
| TemplateName(22), |
| TemplateName(23), |
| TemplateName(24), |
| TemplateName(25), |
| TemplateName(26), |
| TemplateName(27), |
| TemplateName(28), |
| TemplateName(29), |
| TemplateName(30), |
| TemplateName(31), |
| TemplateName(32), |
| TemplateName(33), |
| TemplateName(34), |
| TemplateName(35), |
| TemplateName(36), |
| TemplateName(37), |
| TemplateName(38), |
| TemplateName(39), |
| TemplateName(40), |
| TemplateName(41), |
| TemplateName(42), |
| TemplateName(43), |
| TemplateName(44), |
| TemplateName(45), |
| TemplateName(46), |
| TemplateName(47), |
| TemplateName(48), |
| TemplateName(49), |
| TemplateName(50) |
| >(); |
| return 0; |
| } |