On 2018-3-26 10:46 , Ryan Schmidt wrote:
> 
> On Mar 25, 2018, at 15:56, Kenneth F. Cunningham wrote:
> 
>> To fully comply with the c++11 standard, two library calls (copy-on-write 
>> strings, and std::list) had to be changed in a way that was incompatible 
>> with the older ABI 4 version. A number of other library calls use these two 
>> calls, so a number of other library calls are affected. 
> 
> So. If we compile C++11 software using -D_GLIBCXX_USE_CXX11_ABI=0, as we do 
> in the cxx11-1.1 portgroup, are we building software that does not fully 
> comply with the C++11 standard? If so, what are the consequences of that?

It means the compiled program will not comply with the C++11 ABI, which
has the usual effect of not being ABI compatible, i.e. it won't be able
to interoperate with programs that do use the official, slightly
different, ABI.

I've heard that C++11 was the first version of the C++ standard to
actually specify an ABI. Before that, you had little chance of
compatibility between C++ code built with different compilers. Apple's
clang++ and g++-4.2 are notable exceptions, since they deliberately made
clang++ use the same stdlib as g++.

- Josh

Reply via email to