Я предполагаю, что _M_node
имеет тип _List_node_base*
, так что его можно назначить / инициализировать с помощью _M_next
и / или _M_prev
(который, как вы показали, имеет тип _List_node_base*
).
Интересно, почему вообще существует класс _List_node_base
вместо того, чтобы объявлять _M_next
и _M_prev
членами класса _List_node
. Одной из причин может быть уменьшение количества сгенерированного кода: если у вас много разных специализаций класса _List_node
, то большая часть (если не все) его кода / реализации в неуниверсальном базовом классе уменьшает количество сгенерированного кода .