digitalmars.D.bugs - [Issue 16479] New: Wrong C++ mangling for template
- via Digitalmars-d-bugs (48/48) Sep 09 2016 https://issues.dlang.org/show_bug.cgi?id=16479
https://issues.dlang.org/show_bug.cgi?id=16479 Issue ID: 16479 Summary: Wrong C++ mangling for template Product: D Version: D2 Hardware: x86_64 OS: Linux Status: NEW Severity: normal Priority: P1 Component: dmd Assignee: nobody puremagic.com Reporter: brix brix-verden.dk testcase_cpp.cpp: class StructReader { public: template <typename T> T getDataField(unsigned int offset) const { return 0; } }; void initializeTemplates() { StructReader reader; reader.getDataField<signed char>(0); } testcase.d: extern(C++) class StructReader { public: byte getDataField(T)(uint offset) const; } void main() { new StructReader().getDataField!byte(0); } g++ -c testcase_cpp.cpp dmd testcase.d testcase_cpp.o testcase.o: In function `_Dmain': testcase.d:(.text._Dmain+0x20): undefined reference to `StructReader::getDataField<signed char>::getDataField(unsigned int) const' collect2: error: ld returned 1 exit status --- errorlevel 1 D mangles as: _ZNK12StructReader12getDataFieldIaE12getDataFieldEj Expected C++ symbol: _ZNK12StructReader12getDataFieldIaEET_j --
Sep 09 2016