Lets say you create a vector class that uses `Numeric`

for T.

```
struct Vector2D<T: Numeric> {
var x : T
var y : T
}
```

You may want the following operator

```
extension Vector2D<T> {
static public prefix func -(vector : inout Vector2D<T>) {
// doesn't work . Cannot convert value of type 'T' to expected argument type 'inout Vector2D<_>'
vector.x = -vector.x
vector.y = -vector.y
// and this doesn't work because of the same error.
// vector = Vector2D.init(x: -vector.x, y: -vector.y)
}
}
```

I know I can just multiply by -1 and have it work but I'm curious to know why the way I tried to do it doesn't work even though `Numeric`

has the additive inverse operand .