The Itanium ABI uses 'substitutions' (S_, S0_, S1_, ...) in name mangling. What problem do these substitution entries primarily solve?// e.g. void f(std::string, std::string) // mangles roughly as _Z1fSsSs (Ss == std::string, reused)