libstdc++ PATCH to add abi tag to complex::real/imag
Marc Glisse
marc.glisse@inria.fr
Sun Nov 11 08:08:00 GMT 2012
On Sat, 10 Nov 2012, Jason Merrill wrote:
> As mentioned in http://gcc.gnu.org/wiki/Cxx11AbiCompatibility, C++11 changes
> the return type of complex::real and imag, leading to a binary
> incompatibility between C++98 and C++11 code if the functions are used
> without inlining. This patch adds an ABI tag to the C++11 variants so that
> they have different mangled names. This does not change the exports from
> libstdc++.
It looks like it won't prevent from using ref-qualifiers when they are
implemented if we want to (PR 51013), which is good.
> For the map void->iterator change, I think it would make sense to just
> unconditionally return an iterator;
It does break C++98 code that does "return f();" in a function returning
void, but that's negligible.
> there's no binary compatibility issue
> with older code that expects it to return void, the problem is only with
> C++11 code calling a C++98 instantiation that returns void.
That's going to happen in practice, isn't it? So do you mean to add the
abi tag to this unified function, for safety?
--
Marc Glisse
More information about the Libstdc++
mailing list