https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80183
Markus Trippelsdorf <trippels at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Target Milestone|--- |7.0
--- Comment #3 from Markus Trippelsdorf <trippels at gcc dot gnu.org> ---
The problem is here libstdc++-v3/include/bits/stl_tree.h:
179 #if __cplusplus >= 201103L
180 _Rb_tree_header(_Rb_tree_header&& __x) noexcept
181 {
182 if (__x._M_header._M_parent != nullptr)
183 _M_move_data(__x);
184 else
185 {
186 _M_header._M_color = _S_red;
187 _M_reset();
188 }
189 }
190 #endif
191
192 void
193 _M_move_data(_Rb_tree_header& __from)
194 {
195 _M_header._M_parent = __from._M_header._M_parent;
196 _M_header._M_left = __from._M_header._M_left;
197 _M_header._M_right = __from._M_header._M_right;
198 _M_header._M_parent->_M_parent = &_M_header;
199 _M_node_count = __from._M_node_count;
200
201 __from._M_reset();
202 }
203
204 void
205 _M_reset()
206 {
207 _M_header._M_parent = 0;
208 _M_header._M_left = &_M_header;
209 _M_header._M_right = &_M_header;
210 _M_node_count = 0;
211 }
212 };
on line 183 _M_move_data(__x) doesn't set _M_header._M_color to any value.
So either hard set it to _S_red or augment _M_move_data to copy the color.