[cfe-dev] How to control C++0x adoption in a large codebase?
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.
More information about the cfe-dev