/* | |
TEST_OUTPUT: | |
--- | |
fail_compilation/fail3.d(41): Error: incompatible types for `(a) + (b)`: both operands are of type `vec2` | |
--- | |
*/ | |
// DMD 0.79 linux: Internal error: ../ztc/cgcod.c 1459 | |
template vector(T) | |
{ | |
struct vec2 | |
{ | |
T x, y; | |
} | |
// not struct member | |
vec2 opAdd(vec2 a, vec2 b) | |
{ | |
vec2 r; | |
r.x = a.x + b.x; | |
r.y = a.y + b.y; | |
return r; | |
} | |
vec2 make2(T x, T y) | |
{ | |
vec2 a; | |
a.x = x; | |
a.y = y; | |
return a; | |
} | |
} | |
alias vector!(float).vec2 vec2f; | |
int main() | |
{ | |
vec2f a, b; | |
b.x = 3; | |
a = a + b; | |
//printf("%f\n", a.x); | |
return 0; | |
} |