i’ve got a `Decimal<Unit>`

type i’m trying to implement a `Strideable`

conformance for. it is its own `Stride`

type, and provides the necessary addition and subtraction API. however, the `Stride`

type has to conform to `SignedNumeric`

, which in turn inherits from `Numeric`

, which requires the multiplication operator `*(_:_:)`

.

this would be all fine and good, except the `*(_:_:)`

protocol requirement requires the left-hand and right-hand-side parameters to be of type `Self`

, which does not make sense for an arbitrary `Decimal<Unit>`

. (it should only support multiplication where one of the factors has `Unit == Void`

.)

```
let a:Decimal<Seconds>,
b:Decimal<Void>
let x:Decimal<Seconds> = a * b // okay
let y:Decimal<Seconds> = b * a // okay
let z:Decimal<Seconds> = a * a // this is clearly bogus...
```

why does `Strideable`

require its `Stride`

to support `*(_:_:)`

?