Summary: | Different definitions of _Rb_tree::{erase,_M_destroy_node} between C++98 and C++0x | ||
---|---|---|---|
Product: | gcc | Reporter: | Jeffrey Yasskin <jyasskin> |
Component: | libstdc++ | Assignee: | Not yet assigned to anyone <unassigned> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | gcc-bugs, redi, webrown.cpp |
Priority: | P3 | ||
Version: | 4.6.0 | ||
Target Milestone: | 4.8.0 | ||
Host: | Target: | ||
Build: | Known to work: | ||
Known to fail: | Last reconfirmed: |
Description
Jeffrey Yasskin
2010-07-27 07:20:35 UTC
Definitely they are not, **no** binary compatibility between C++98 and C++0x. And I can tell you there are **many** more incompatibilities beyond this one which you noticed. Well, this specific snippet will work at some point, because we want to use namespace association for the C++0x containers. Of course no binary compatibility in general, C++0x and C++98 code will not be allowed in general to interoperate, for *many* reasons (just as an example std::list will be changed to have a constant time size in C++0x) The different definitions of erase have been mangled differently since GCC 4.8, by using the abi-tag. Gold still warns about _M_destroy_node, but that's harmless. Author: redi Date: Mon Aug 13 18:54:43 2018 New Revision: 263516 URL: https://gcc.gnu.org/viewcvs?rev=263516&root=gcc&view=rev Log: PR libstdc++/45093 avoid warnings for _M_destroy_node PR libstdc++/45093 * include/bits/stl_tree.h (_Rb_tree::_M_destroy_node(_Link_type)): Combine definitions to avoid --detect-odr-violations warning. Modified: trunk/libstdc++-v3/ChangeLog trunk/libstdc++-v3/include/bits/stl_tree.h |