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