2) Object layout changes to std::list and std::basic_string. For these
types, there is no way to both retain backward compatibility with older
C++98 code and conform to the C++11 standard. The best we can hope for
is to allow old code to coexist with new code so long as they don't try
to touch the same string/list objects.
As above, one solution to this would be to change the linkage name of
the new versions so that they don't clash with the old versions. But
that isn't enough in this case, as it wouldn't affect the linkage name
of a class like
struct Wrap { std::string s; };
so we would need some way to cause the name decoration to propagate to
other containing/derived classes.