list2のソースコードを少し閲覧しましたが、
デストラクタの解放処理時にdata_firstから消してないせいでメモリリークが起こりそうな所と、
clear関数の解放処理後にdata_firstへ新たに確保した領域のポインタを再代入していないせいで、2回clear呼び出した際に二重解放ないしnull参照が起こりそうな点が少し気になりました

それから、データの解放時に各要素に対してデストラクタが呼ばれていないように見えます。
トリビアルなデストラクタ、又はdelete宣言されているデストラクタを持つ型を扱うのであれば問題ありませんが、それ以外の型を扱う場合予期しない動作を引き起こす恐れもあるかと思われます。
扱う型によっては、注意ないしは修正が必要かもしれません。

特に動かした訳でも無く、ちらっと見て気になった点を並べただけなので的外れな指摘もあるかもしれませんが、その際は指摘なり無視なりしていただければ。