This commit is contained in:
Araq
2016-12-22 16:43:37 +01:00
parent 237e2664e0
commit 0ef6815529
2 changed files with 31 additions and 1 deletions

View File

@@ -207,7 +207,9 @@ proc isImportedType(t: PType): bool =
result = t.sym != nil and sfImportc in t.sym.flags
proc isImportedCppType(t: PType): bool =
result = t.sym != nil and sfInfixCall in t.sym.flags
let x = t.skipTypes(irrelevantForBackend)
result = (t.sym != nil and sfInfixCall in t.sym.flags) or
(x.sym != nil and sfInfixCall in x.sym.flags)
proc getTypeDescAux(m: BModule, origTyp: PType, check: var IntSet): Rope
proc needsComplexAssignment(typ: PType): bool =

View File

@@ -0,0 +1,28 @@
discard """
cmd: "nim cpp $file"
output: ''''''
"""
# bug #5140
{.emit:"""
#import <cassert>
template <typename X> class C {
public:
int d;
C(): d(1) { }
C<X>& operator=(const C<X> other) {
assert(d == 1);
}
};
""".}
type C{.importcpp, header: "<stdio.h>", nodecl.} [X] = object
proc mkC[X]: C[X] {.importcpp: "C<'*0>()", constructor, nodecl.}
proc foo(): C[int] =
result = mkC[int]()
discard foo()