名前マングリングを使用する理由についての私の理解では、アセンブラとリンカは C 識別子しか処理できないということです。" int foo::bar::baz<spam::eggs>(const MoreSpam&)
" は既存のアセンブラではラベルとして使用できず、既存のリンカはそれを有効な関数シグネチャとして認識しないため、" _ZN3foo3bar3bazIN4spam4eggsEEEiRK8MoreSpam
" のようなものになり、(多かれ少なかれ) 有効な C 識別子になります。
しかし、これは私たちのツールの比較的些細な制限のようです。次のようなアセンブラとリンカを作成できない、または作成しない正当な理由はありますか。
int foo::bar::baz<spam::eggs>(MoreSpam const&):
; opcodes go here
ret
大丈夫ですか?