Subject: Re: [boost] New libraries implementing C++11 features in C++03
From: Nathan Ridge (zeratul976_at_[hidden])
Date: 2011-11-25 02:17:40
> From: nevin_at_[hidden]
> Subject: Re: [boost] New libraries implementing C++11 features in C++03
> On 24 November 2011 22:51, Nathan Ridge <zeratul976_at_[hidden]> wrote:
> > There is a big difference between upgrading a library and switching to
> > a new language specification. For starters, C++03 and C++11 are ABI-
> > incompatible on most implementations that I know of.
> Is this documented somewhere? I've seen ABI changes based on compiler
> releases, but not based on whether or not the C++0x flag is set. I'd
> love to be as informed as you are on this.
This thread describes the situation nicely for GCC:
I haven't been following clang as closely, but I think they're doing
somewhat better in that the libc++ ABI is the same in both modes.
> > That means that before
> > you can even compile your code in C++11 mode, every library and piece of
> > code that your code links to must also be recompiled in C++11 mode.
> Sure sounds like when someone changes a version of Boost, they end up
> having to recompile the world both to avoid ODR violations and to make
> sure things link correctly. (Or course, if they have pieces of code
> that don't use Boost those can remain unchanged.)
I'm no expert on this topic, but I think as long as calls across module
boundaries do not take parameters of Boost types, the modules can be
compiled with different versions of Boost... I could be wrong though.
And of course, for header-only libraries like Boost.Local there should be
no problem whatsoever.