Я просмотрел класс списка EASTL, чтобы посмотреть, как автор реализовал узлы. Мое ожидание было упрощенным классом/структурой. Вместо этого я вижу базу и node, которые наследуются от этой базы (все еще упрощенно, но почему два класса?). Его комментарии объясняют, почему:
Мы определяем ListNodeBase отдельно от ListNode (ниже), поскольку это позволяет у нас есть не-шаблонные операции, такие как вставка, удаление (ниже) и делает это так, что привязка списка node не несет с собой T, что отходов и, возможно, приводят к удивлению пользователя из-за дополнительных Ts существующих что пользователь явно не создал. Недостатком всего этого является то, что это делает отладочный просмотр списка более сложным, учитывая, что указатели node имеют тип ListNodeBase, а не ListNode. Однако, смотрите ListNodeBaseProxy ниже.
Я не понимаю здесь нескольких вещей. Я понимаю часть, почему это сделает отладочный просмотр немного сложнее, но что он имеет в виду под list anchor node doesn't carry a T with it
и would waste space and possibly lead to surprising the user due to extra Ts existing that the user didn't explicitly create
?