std::list<int> foo;

//適当にfooにつっこんで…

for (std::list<int>::reverse_iterator i = foo.rbegin(); i != foo.rend(); i = foo.erase(i))
 ;

とか、こんな感じじゃね?
試してないけど。