This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
Re: Really obscure C++ mangling error with -fnew-abi
> In this mangling, std::__uninitialized_fill_n_aux is a substitution
> candidate because it is a template name. The name of a function
> without its signature (whether it is a template-id or not templated)
> is not a substitution candidate, but the name of an uninstantiated
> template (whether it is a class or function template) is.
I see. Given
struct s{
struct m{};
template<class T>
void m(struct m){}
};
int main()
{
s x;
struct s::m M;
x.template m<int>(M);
}
the current g++ emits (under new ABI) _ZN1s1mIiEEvNS_1mE, which is
'void s::m<int>(s::m)'. Based on your description, I'd say that ::s::m
is a substitution candidate, so it should be '_ZN1s1mIiEEvS0', right?
I'm not sure what would need to be changed here: the spec or
g++. However, I do feel that there is need for action.
Regards,
Martin