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: [email protected]
Reporter: [email protected]
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
--