Oracle Solaris Studio 12.2: C++ ユーザーズガイド

12.3.1 再配布とサポートされる STLport ライブラリ

エンドユーザーオブジェクトコードライセンスの条件に基づいて、作成した実行可能ファイルまたはライブラリとともに再配布可能なライブラリおよびオブジェクトファイルの一覧は、再配布の README を参照してください。この README の C++ セクションに、このリリースのコンパイラがサポートしている STLport.so のバージョンが記載されています。この Readme は、http://www.oracle.com/technetwork/server-storage/solarisstudio/overview/index.html にある、Oracle Solaris Studio ソフトウェアのこのリリースについての法的ページにあります。

次の例は、ライブラリの実装について移植性のない想定が行われているため、STLport を使用してコンパイルできません。特に、<vector> または <iostream><iterator> を自動的にインクルードすることを想定していますが、これは正しい想定ではありません。


#include <vector>
#include <iostream>

using namespace std;

int main ()
{
    vector <int> v1 (10);
    vector <int> v3 (v1.size());
    for (int i = 0; i < v1.size (); i++)
      {v1[i] = i; v3[i] = i;}
    vector <int> v2(v1.size ());
    copy_backward (v1.begin (), v1.end (), v2.end ());
    ostream_iterator<int> iter (cout, " ");
    copy (v2.begin (), v2.end (), iter);
    cout << endl;
    return 0;
}

問題を解決するには、ソースで <iterator> をインクルードします。