1 template<typename T, unsigned I> struct X
2 {
3 void Fn ()
4 {
5 {
6 auto v1 = []<typename U> (U) {};
7 auto v2 = [] (T) {};
8 auto v3 = []<typename U> (T, U) {};
9
10 v1 (1);
11 v2 (1);
12 v3 (1, 2);
13 }
14 if constexpr (I)
15 {
16 auto v1 = []<typename U> (U) {};
17 auto v2 = [] (T) {};
18 auto v3 = []<typename U> (T, U) {};
19
20 v1 (1);
21 v2 (1);
22 v3 (1, 2);
23 }
24 {
25 auto v1 = []<typename U> (U) {};
26 auto v2 = [] (T) {};
27 auto v3 = []<typename U> (T, U) {};
28
29 v1 (1);
30 v2 (1);
31 v3 (1, 2);
32 }
33
34 };
35 };
36
37 void f (X<int, 0> &x, X<float, 0> &y, X<float, 1> &z)
38 {
39 x.Fn ();
40 y.Fn ();
41 z.Fn ();
42 }