https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88413
Bug ID: 88413 Summary: g++ mangles names involving unresolved names in function argument template parameters differently from the ABI standard. Product: gcc Version: 8.2.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: brennan at umanwizard dot com Target Milestone: --- Created attachment 45189 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=45189&action=edit test case Please see the attached test case. how different compilers mangle g<int>: clang: _Z1gIiEvP2S1IXsr2S2IT_EE3valEE g++ : _Z1gIiEvP2S1IXsr2S2IT_E3valEE Notice one less "E" from g++. I believe g++ is wrong here, if I am interpreting https://itanium-cxx-abi.github.io/cxx-abi/abi.html#mangle.unresolved-name correctly. It seems g++ doesn't emit the "E" in <unresolved-name> ::= [gs] sr <unresolved-qualifier-level>+ E <base-unresolved-name>