Есть intrusive список например и base hook. Соответственно есть Value : Node. В Node можно линки держать как Node* или как Value*. Внутри контейнера лежит header Node, в случае если линковать указателями на значения, надо приводить &header -> Value*. При этом этот end итератор не разыменовывается, разве что кастом к Node в reverse iterator.
Там же вроде static_cast (то есть я понимаю, что static_cast к Value : Node тривиален, но такое)