1template forwardImpl*(impl, arg) {.dirty.} =
2  when sizeof(x) <= 4:
3    when x is SomeSignedInt:
4      impl(cast[uint32](x.int32))
5    else:
6      impl(x.uint32)
7  else:
8    when x is SomeSignedInt:
9      impl(cast[uint64](x.int64))
10    else:
11      impl(x.uint64)
12
13template toUnsigned*(x: int8): uint8 = cast[uint8](x)
14template toUnsigned*(x: int16): uint16 = cast[uint16](x)
15template toUnsigned*(x: int32): uint32 = cast[uint32](x)
16template toUnsigned*(x: int64): uint64 = cast[uint64](x)
17template toUnsigned*(x: int): uint = cast[uint](x)
18