listのeraseで自分のコンテナ以外の反復子を削除できるようなのですが、
この使用は抑止した方がいいのでしょうか?

#include<list>
#include<iostream>
#include<string>
#include<vector>
using namespace std;

int main()
{
list< vector<string> > a,a2;

vector<string > s,s2;
s.push_back("111");
s2.push_back("222");

a.push_back(s);
a2.push_back(s2);

a.erase(a2.begin()); //aのeraseでa2の反復子を削除する。
//list<T>::eraseのソースをみると
//_Mysize--;となっているが、
//_Mysize=size();としないと矛盾しないか?(debbugerのsizeも0,1になってる)

cout << "a size:" << (*(a.begin())).size() << std::endl;
cout << "a2 size:" << (*(a2.begin())).size() << std::endl;//a2の要素は削除されてる
//これはbegin()とend()から計算してるから大丈夫。

cout << "*a.begin():" << *(*(a.begin())).begin() << std::endl;//111
}