blob: b61c699f640d410742d1082992e400c86bb62787 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
discard """
targets: "cpp"
output: '''int
float'''
"""
import typetraits
# bug #4625
type
Vector {.importcpp: "std::vector<'0 >", header: "vector".} [T] = object
proc initVector[T](): Vector[T] {.importcpp: "'0(@)", header: "vector", constructor.}
proc doSomething[T](v: var Vector[T]) =
echo T.name
var v = initVector[int]()
v.doSomething()
var vf = initVector[float]()
vf.doSomething() # Nim uses doSomething[int] here in C++
# Alternative definition:
# https://github.com/nim-lang/Nim/issues/7653
type VectorAlt* {.importcpp: "std::vector", header: "<vector>", nodecl.} [T] = object
proc mkVector*[T]: VectorAlt[T] {.importcpp: "std::vector<'*0>()", header: "<vector>", constructor, nodecl.}
proc foo(): VectorAlt[cint] =
mkVector[cint]()
proc bar(): VectorAlt[cstring] =
mkVector[cstring]()
var x = foo()
var y = bar()
|