1.23.6 標準 C++ ライブラリの実装定義(Rogue Wave)

ARM C++ ライブラリには、ISO/IEC 14882 :1998(E) C++ Standard で定義されているすべてのライブラリが含まれていますが、いくつかの制限があります。

Rogue Wave C++ ライブラリで定義されている実装定義の動作については、Rogue Wave の HTML マニュアルを参照して下さい。
標準 C++ ライブラリはバイナリ形式のみで提供されています。
次の表は、今回のリリースでサポートされていない重要な機能を示しています。

表 1-12 標準 C++ ライブラリとの相違点

標準 実装上の相違点
ロケール ロケールメッセージファセットはサポートされていません。ARM C ライブラリでは、nl_types.h を介した catopen()catclose() がサポートされていないため、実行時にカタログを開くことはできません。2 つのロケール定義のうち、いずれか一方をリンク時に選択できます。他のロケールは、ユーザが再定義可能な関数を使用して作成できます。
タイムゾーン ARM C ライブラリではタイムゾーンをサポートしていません。

スレッドセーフティ

このセクションでは、Rogue Wave C++ ライブラリにおけるスレッドセーフティの要点を要約します。
  • 関数 std::set_new_handler() は、スレッドセーフではありません。つまり、::operator new および ::operator delete の一部の形態は、std::set_new_handler() に関してスレッドセーフではありません。
    • 以下の C++ ランタイムライブラリ関数のデフォルト実装では malloc()free() を使用しており、これらの関数は相互にスレッドセーフです。ただし、これらの関数は std::set_new_handler() に対してはスレッドセーフではありません。これらの関数は置き換えることもできます。
      ::operator new(std::size_t)
      ::operator new[](std::size_t)
      ::operator new(std::size_t, const std::nothrow_t&)
      ::operator new[](std::size_t, const std::nothrow_t)
      ::operator delete(void*)
      ::operator delete[](void*)
      ::operator delete(void*, const std::nothrow_t&)
      ::operator delete[](void*, const std::nothrow_t&)
    • 以下の配置関数もスレッドセーフです。これらを置き換えることはできません。
      ::operator new(std::size_t, void*)
      ::operator new[](std::size_t, void*)
      ::operator delete(void*, void*)
      ::operator delete[](void*, void*)
  • グローバルオブジェクトの構築と破棄はスレッドセーフではありません。
  • __cxa_guard_acquire()__cxa_guard_release()__cxa_guard_abort()__cxa_atexit()、および __aeabi_atexit() の各関数を適切に再実装した場合、ローカルなスタティックオブジェクトの構築をスレッドセーフにすることができます。例えば、適切な再実装により、以下のような lsobj の構築をスレッドセーフにすることができます。
    struct T { T(); };
    void f() { static T lsobj; }
  • 呼び出されたユーザコンストラクタおよびデストラクタもスレッドセーフの場合、例外のスローはスレッドセーフになります。
  • ARM C++ ライブラリは ARM C ライブラリを使用します。マルチスレッド環境で ARM C++ ライブラリを使用するには、マルチスレッド環境で ARM C ライブラリを使用する場合に必要な関数と同じものを提供する必要があります。
  • libc++ ライブラリはスレッドセーフではありません。
関連情報
Rogue Wave 標準 C++ ライブラリマニュアル
非機密扱いPDF file icon PDF 版ARM DUI0808CJ
Copyright © 2014, 2015 ARM.All rights reserved.