Есть ли какая-то причина, по которой комитет по стандартам решил реализовать API для std::forward_list
, так что он не соответствует требованиям концепции контейнера Sequence
?std :: forward_list и требования к концепции последовательности
В Sequence
требования концепции указывают, что контейнер должен быть совместим с выражениями типа:
c.insert(it, v); // insert at position
c.insert(it, n, v); // fill insert
c.insert(it, begin, end); // insert range
... где it
является итератор, v
является элементом, и n
является целым числом, и begin/end
является итератора.
Нет никакой причины, по которой этот API невозможно с помощью односвязного списка, поскольку для функций insert
требуется начальная позиция итератора. Но по какой-то причине std::forward_list
имеет функции insert_after
, которые нарушают совместимость с концепцией Sequence.
Есть ли причина для этого?
Что именно вы имеете в виду? 'Forward_list' - контейнер последовательности (см. [Sequence.reqmts]/1). – Columbo
@Columbo, требования к последовательности включают функцию 'insert' member – Siler
.. странный. В стандарте многократно упоминается, что 'forward_list' соответствует требованиям контейнера последовательности. Даже на cppreference. – Columbo