[cfe-dev] How to control C++0x adoption in a large codebase?

John McCall rjmccall at apple.com
Wed Oct 5 17:05:48 PDT 2011


On Oct 5, 2011, at 4:44 PM, Jeffrey Yasskin wrote:

> On Wed, Oct 5, 2011 at 4:30 PM, John McCall <rjmccall at apple.com> wrote:
>> On Oct 5, 2011, at 3:35 PM, Jeffrey Yasskin wrote:
>>> I'm working on migrating a certain large codebase to C++0x, and we're
>>> looking for a way to turn on C++0x mode but make sure people don't use
>>> C++0x features before we're ready for them.
>>> 
>>> * We need to turn on -std=gnu++0x for the whole codebase at once
>>> because C++98 and C++0x have different ABIs.
>> 
>> As far as I'm aware, this is not really true, and I actually put a lot of
>> effort into fighting a few committee proposals that would have forced
>> ABI changes.  There are a few things like name mangling which have been
>> changed/clarified in the Itanium ABI, and obviously the standard library
>> has to export more symbols in '0x, but I don't know of well-formed '03
>> programs that have changed.
> 
> http://gcc.gnu.org/PR45093 concludes that the libstdc++ maintainers
> don't intend to maintain binary compatibility between the two language
> versions. It certainly may be that it would have been possible to
> maintain compatibility, but they didn't, so that's what we have to
> live with. libc++ probably does this better, but we don't really want
> to block constrained C++0x support on switching to that either.

Okay.  Just wanted to make sure you weren't talking about some
core-language thing I'd missed.  I believe Howard has, in fact, designed
libc++ with cross-dialect binary compatibility in mind, although obviously
he's been assisted in that by being able to design with foreknowledge
of C++0x's requirements.

John.



More information about the cfe-dev mailing list