On Linux g++/clang++ is mangled as _Z10test10058lPFPvS_EPFS_PKvEPFS3_S_E According to g++/clang++, how many symbols are there in this function definition ? What are the substitutions ? (S_, S0_, S1_, …) More specifically what is S3_ ? (edit – adding some context) The D language allows to interact with C++ by declaring symbols as extern(C++). Unfortunately the current implementation is not always