Types
CppConstIterator[ValueType] {.importc.} = object
CppIterator[ValueType] {.importc.} = object
Procs
proc `+`[I: SomeCppIterator](it: I; offset: int): I {.importcpp: "# + #", ...raises: [], tags: [].}
proc `-`[I: SomeCppIterator](it: I; offset: int): I {.importcpp: "# - #", ...raises: [], tags: [].}
proc `==`[ValueType](it, otherIt: CppConstIterator[ValueType]): bool {. importcpp: "# == #", ...raises: [], tags: [].}
proc `==`[ValueType](it, otherIt: CppIterator[ValueType]): bool {. importcpp: "# == #", ...raises: [], tags: [].}
proc `[]`[ValueType](it: CppConstIterator[ValueType]): ValueType {. importcpp: "*#", ...raises: [], tags: [].}
proc `[]`[ValueType](it: CppIterator[ValueType]): var ValueType {. importcpp: "*#", ...raises: [], tags: [].}
proc inc(it: SomeCppIterator) {.importcpp: "(void)(++#)", ...raises: [], tags: [].}
proc inc(it: SomeCppIterator; offset: int) {.importcpp: "(void)(# += #)", ...raises: [], tags: [].}