STL::vector::clear()が内部バッファを保持しない!?

Effective STL―STLを効果的に使いこなす50の鉄則
なにかと便利なSTL::vectorですが、こいつの実装は一般的に、配列サイズを小さくする処理をしても内部にアロケートされたメモリ領域は小さくならないようになっています。その為にバッファサイズを強制的に小さくする手法としてswap技法なるものも存在するくらいです(Effective STL参照)。
しかし、開発環境によっては、vector::clear()時に内部メモリを解放してしまう実装も時々存在します。Visual C++ 2005ではerase()を呼び出していたので保持していますが、Visual Studio2003だったかな、こいつはバッファを解放してました。
clear()の後にバッファが保持されていると思い込んでpush_back()を大量に呼ぶようなコードを書いていると、環境によってはバッファの拡張&メモリの再配置が大量に発生してしまう→アロケータ呼び出し&オブジェクトコピー大量発生→パフォーマンス劇低下という問題が発生するので気をつけてください。私はこれと某プラットフォームでとっても痛い目にあいました。
とりあえず、clear()の代わりにresize(0)を呼んでおけばほとんどの実装ではバッファを解放しないと思うので、そんな感じでよろしくといったところでしょうか。