1 // PR c++/46401
2 // { dg-do compile }
3 // { dg-options "-Wsequence-point" }
4 
5 struct S
6 {
7   S ();
8   S &operator<< (const char *);
9   S (const S &);
10 };
11 
12 #define N1(n) << #n
13 #define N2(n) N1(n)
14 #define N3(n) N2(n##0) N2(n##1) N2(n##2) N2(n##3) N2(n##4) \
15 	      N2(n##5) N2(n##6) N2(n##7) N2(n##8) N2(n##9)
16 #define N4(n) N3(n##0) N3(n##1) N3(n##2) N3(n##3) N3(n##4) \
17 	      N3(n##5) N3(n##6) N3(n##7) N3(n##8) N3(n##9)
18 #define N5(n) N4(n##0) N4(n##1) N4(n##2) N4(n##3) N4(n##4) \
19 	      N4(n##5) N4(n##6) N4(n##7) N4(n##8) N4(n##9)
20 S s = S () N5(a) N5(b);
21