Nicolai Josuttis の「C++ 標準ライブラリ」
第 9 章: STL イテレータは次のように述べています。
以下は、一部のプラットフォームではコンパイルできない場合があります。
std::vector <int> coll;
//sort, starting with second element
//- NONPORTABLE version
if (coll.size() > 1){
std::sort(++coll.begin(),col.end());
}
プラットフォームによっては、++col.begin() のコンパイルが失敗する場合があります。ただし、ベクトルではなく両端キューを使用すると、コンパイルは常に成功します。... ... ユーティリティ関数 next() および prev() は、コードの移植性を考慮して C++11 で提供されます。
誰かがこの動作を説明できますか?
MINGW gcc 4.6.1、Windows OS で次の正しい出力が得られました。
std::vector<int> coll ;
for (int i=15; i>=1; i--)
coll.push_back(i);
sort(++coll.begin(),coll.end());