mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-28 17:04:41 +00:00
fixes #4625
This commit is contained in:
@@ -546,7 +546,7 @@ proc getTypeDescAux(m: BModule, typ: PType, check: var IntSet): Rope =
|
||||
of tyRef, tyPtr, tyVar:
|
||||
var star = if t.kind == tyVar and tfVarIsPtr notin typ.flags and
|
||||
compileToCpp(m): "&" else: "*"
|
||||
var et = t.lastSon
|
||||
var et = typ.skipTypes(abstractInst).lastSon
|
||||
var etB = et.skipTypes(abstractInst)
|
||||
if etB.kind in {tyArrayConstr, tyArray, tyOpenArray, tyVarargs}:
|
||||
# this is correct! sets have no proper base type, so we treat
|
||||
|
||||
22
tests/cpp/tempty_generic_obj.nim
Normal file
22
tests/cpp/tempty_generic_obj.nim
Normal file
@@ -0,0 +1,22 @@
|
||||
discard """
|
||||
cmd: "nim cpp $file"
|
||||
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++
|
||||
Reference in New Issue
Block a user