Oracle® Developer Studio 12.5: C++ ユーザーズガイド

印刷ビューの終了

更新: 2016 年 7 月
 
 

12.1 STLport

libCstd の代替ライブラリを使用する場合は、標準ライブラリの STLport 実装を使用できます。libCstd をオフにして、STLport ライブラリで代用するには、次のコンパイラオプションを使用します。

  • -library=stlport4

詳細は、–library=l[,l...] を参照してください。

このリリースでは、libstlport.a という静的アーカイブおよび libstlport.so という動的ライブラリの両方が含まれています。

STLport 実装を使用する前に、次のことを考慮して判断してください。

  • STLport は、オープンソースの製品で、リリース間での互換性は保証されません。つまり、STLport の将来のバージョンでコンパイルすると、STLport 4.5.3 でコンパイルしたアプリケーションが破壊される可能性があります。また、STLport 4.5.3 を使用してコンパイルしたバイナリは、STLport の将来のバージョンを使用してコンパイルしたバイナリとリンクできない場合もあります。

  • stlport4 および iostream のライブラリは、入出力ストリームの固有の実装を提供します。これらのライブラリの 2 個以上を-library オプションを使って指定した場合、プログラム動作が予期しないものになる恐れがあります。

  • コンパイラの将来のリリースには、STLport4 が含まれない可能性があります。STLport の新しいバージョンだけが含まれる可能性があります。コンパイラオプションの -library=stlport4 は、将来のリリースでは使用できず、STLport のそれ以降のバージョンを示すオプションに変更される可能性があります。

  • STLport では、Tools.h++ はサポートされません。

  • STLport では、テキスト I/O の国際化およびローカライゼーションに使用されるロケールのサポートが提供されません。

  • STLport は、デフォルトの libCstd とはバイナリ互換ではありません。STLport の標準ライブラリの実装を使用する場合は、-library=stlport4 オプションを指定して、サードパーティーのライブラリを含むすべてのファイルのコンパイルおよびリンクを実行する必要があります。このことは、たとえば STLport 実装と C++ 区間演算ライブラリ libCsunimath を同時に使用できないことを意味します。その理由は、libCsunimath のコンパイルに使用されたのが、STLport ではなくデフォルトライブラリヘッダーであるためです。

  • STLport 実装を使用する場合は、コードから暗黙に参照されるヘッダーファイルをインクルードしてください。標準のヘッダーは、実装の一部として相互にインクルードできます (必須ではありません)。STLport はほかの実装に比べて、相互にインクルードするヘッダーのインスタンスが少ない傾向にあります。

次の例は、ライブラリの実装について移植性のない想定が行われているため、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> をインクルードします。

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

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