Skip to content

generic matching error #907

@fowlmouth

Description

@fowlmouth

Error: ambiguous call; both a44.>>(left: PStream, right: var T): PStream and a44.>>(left: PStream, right: var T): PStream match for: (PStream, int16)

import streams

proc `>>` [T: int32|uint32|float32] (left: PStream; right: var T): PStream {.discardable.}=
  right = cast[t](left.readInt32)
  return left
proc `>>` [T: int16|uint16] (left:PStream; right:var T):PStream{.discardable.}=
  right = cast[t](left.readint16)
  return left
proc `>>` [T: int8|uint8|char|byte] (left: PStream; right: var T): PStream{.discardable.}=
  right = cast[T](left.readInt8)
  return left


var 
  x: int32
  y: int16
  z: int8
  stream = newStringStream("ABCDEFGJHSDOFIJ")
stream >> x >> y >> z

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions