On 24 March 2016 at 14:03, Jeffrey Walton <noloader@xxxxxxxxx> 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.