Why does -Wabi-tag complain when -std=c++03?

Jonathan Wakely jwakely.gcc@gmail.com
Thu Mar 24 14:29:00 GMT 2016


On 24 March 2016 at 14:03, Jeffrey Walton <noloader@gmail.com> wrote:
>>>> The new std::string and std::list are also valid implementations for C++03.
>>>
>>> OK, good. Thanks.
>>>
>>> If its a valid implementation, then why is the compiler complaining?
>>
>> That question doesn't even make sense. GCC's warnings aren't there to
>> say "this implementation does not conform to the standard".
>
> Yeah, it only get worse:
>
> $ g++ -x c++ -include iostream -dM -E - </dev/null | grep ABI_CHANGE
> $ g++ -x c++ -include iostream -std=c++11 -dM -E - </dev/null | grep ABI_CHANGE
> $

What's this supposed to show? Worse than what?

The ABI_CHANGE macro in the blog post is just an example of a macro
that might appear in a third-party library, it's not defined by GCC. I
thought the fact the example defines abi2::MyType made that fairly
obvious. That isn't defined by GCC either.

> I get the problem its trying to solve; especially the part about the
> return type ABI. But I have to admit I'm just about totally confused
> about the implementation details for library authors, the coexisting
> symbols discussed in the blog, and the ABI_CHANGE change macro.

So don't try to support coexistence then, require users to use a build
of your library that uses the same ABI as the rest of their libraries
and objects.



More information about the Gcc-help mailing list