On 10/13/20 4:11 PM, James Blachly wrote:
On 10/13/20 5:23 AM, Jamie wrote:
Building with:
g++ -c a.cpp
dmd main.d a.o
Throws the error:
/usr/bin/ld: main.o: in function `_Dmain':
main.d:(.text._Dmain[_Dmain]+0x31): undefined reference to `void
func3<int>(int*, int*)'
/usr/bin/ld: main.d:(.text._Dmain[_Dmain]+0x3e): undefined reference
to `void func4<int>(int const*, int const)'
collect2: error: ld returned 1 exit status
Error: linker exited with status 1
Is the template even instantiated? With just a template definition and
an object file I am surprised you even have a symbol?
Yes, they all have explicit template instantiations on the C++ side.
I think the issue is with D's "turtles all the way down" style const. My
workaround would be to define wrapper functions that may need to do
casting on one or the other side.
Ali