On 20.12.2017 19:42, Johan Engelen wrote:
On Wednesday, 20 December 2017 at 13:57:20 UTC, Mike Parker wrote:
Many thanks to Rainer for his insightful new article for the D Blog
outlining the new name mangling algorithm.
Nice!
Thanks.
"D and C++ avoid this problem by adding more information to the symbol
name, i.e. they encode into a symbol name the scope in which the symbol
is defined, the function argument types, and the return type. "
I would change it to "... and the return type (D only)". C++ does not
include the return type in the mangle for normal functions (it does for
templates). An important difference, concerning the earlier remark about
programs crashing when "fail to update and recompile all source files
that use the new declarartion"
AFAICT that's for the Itanium C++ ABI only, the VC mangling always
encodes the return type, too.
I also noticed that gcc doesn't encode the inferred type of an "auto"
return type for templates (available with C++17; or was it in C++14
already?).