On Tuesday, 13 October 2020 at 09:23:48 UTC, Jamie wrote:
It appears that func3 and func4 take on different types depending on other variables being present? Is this expected?
Nope, it's a bug in the Itanium C++ mangler, please file a bug. MSVC++ mangling seems fine, after fixing the D declarations to
void func3(T)(T* b, const(T)* a); void func4(T)(const(T)* a, T* b);[A D `const T*` is equivalent to C++ `const T* const`; this matters for MSVC mangling...].