1 /*
2 TEST_OUTPUT:
3 ---
4 fail_compilation/fail3.d(40): Error: incompatible types for ((a) + (b)): 'vec2' and 'vec2'
5 ---
6 */
7 
8 // DMD 0.79 linux: Internal error: ../ztc/cgcod.c 1459
9 
vector(T)10 template vector(T)
11 {
12     struct vec2
13     {
14         T x, y;
15     }
16 
17     vec2 opAdd(vec2 a, vec2 b)
18     {
19         vec2 r;
20         r.x = a.x + b.x;
21         r.y = a.y + b.y;
22         return r;
23     }
24 
25     vec2 make2(T x, T y)
26     {
27         vec2 a;
28         a.x = x;
29         a.y = y;
30         return a;
31     }
32 }
33 
34 alias vector!(float).vec2 vec2f;
35 
main()36 int main()
37 {
38     vec2f a, b;
39     b.x = 3;
40     a = a + b;
41     //printf("%f\n", a.x);
42     return 0;
43 }
44