ノード毎に bool exists を持たせて、イテレータも独自のものを作成する

リスト.begin() や イテレータ::operator ++ が呼ばれるタイミングでそのフラグを確認して、
1. exists == false であり、
 1.1 イテレータが ::const_iterator に該当するものであれば、
  次の exists == true の要素を返す
 
 1.2 イテレータが ::iterator に該当するものであれば、
  次の exists == true の要素を返し、そこまでの全ての要素(exists == false)を削除する

2. exists == true であれば
  現在の要素を返す

Item クラスにはイテレータを渡すなどして、exists にアクセスする方法を用意しておく

・・・という構造にしてみようと思う
std::list<T, ...> が使用しているイテレータやノードを独自のものにする簡単な方法なんてありますか?