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
