Здравствуйте, Evgeny.Panasyuk, Вы писали:
EP>Я посмотрел в исходниках libstdc++ — насколько я распарсил, там именно так — последний узел имеет только два указателя, без места под данные.
Похоже на то.
EP>В других реализациях может быть по-другому.
Ага:
_Value_type _Myval; // the stored value, unused if head
BFE>>А почему вообще нельзя обойтись без этой ноды?
EP>Ты имеешь в виду использовать вместо неё nullptr? Не получится — список двусвязный, мы можем взять std::prev от .end(). Можно конечно попробовать без дополнительного узла, но будет сложнее, а главное медленнее.
Есть варианты. Например, .end() итератор может хранить указатель на сам List, а List может иметь хранить указатель на last. Но придётся заводить отдельный тип, который должен будет мимикрировать под вид обычного итератора...
EP>Да и проблемы в дополнительной ноде нет никакой — она хранится по значению в std::list, и содержит только два указателя которые нужны в любом случае.
Согласен.