1.23.5 標準 C++ ライブラリの実装定義

ARM® コンパイラ 6 の標準 C++ ライブラリは、libc++ により実装されますが、いくつかの制限があります。

C++11 のサポート

ARM コンパイラ 6 libc++ ライブラリは、大半の C++11 をサポートします。主な制限は、Atomic 操作ライブラリ <atomic> およびスレッドサポートライブラリ <thread> がサポートされないことです。

例外のサポート

libc++ ライブラリは、C++ 例外の使用をサポートします。libc++ の C++ 例外のコードサイズおよびパフォーマンスは最適化されていません。
-fno-exceptions および libc++ に対するサポートは、制限されています。
  • ARM コンパイラ 6 には、-fno-exceptions でビルドする libc++ のバリアントは含まれていません。このため、ビルド済みの libc++ オブジェクトから例外がスローされることがあります。libc++ からの C++ 例外が、-fno-exceptions でビルドされたコードに伝播する場合、プログラムは終了します。
  • ヘッダファイルに実装される libc++ の一部は、-fno-exceptions でコンパイルされることがあります。-fno-exceptions が使用されている場合、libc++ は、例外をスローする代わりに、assert マクロを呼び出します。

    これらの assert マクロは、NDEBUG マクロが定義された場合に削除されます。

スタティックイニシャライザの標準ストリームの使用のサポート

スタティックな初期化において、 ARM コンパイラ 6 は、<iostream> で定義される、cincout、および cerr の各標準ストリームの使用をサポートしません。libc++ ライブラリは、他のスタティックな初期化が呼び出される前にこれらのストリームが初期化されることを保証しません。

マルチスレッドのサポート

ARM コンパイラ 6 は、libc++ 用のマルチスレッドはサポートしません。libc++ ライブラリはマルチスレッドサポートでビルドされておらず、Atomic 操作ライブラリおよびスレッドサポートライブラリはサポートされません。

Array Construction および Delete ヘルパ関数のサポート

ARM コンパイラ 6 は、Array Construction ヘルパ関数および Delete ヘルパ関数を使用する他のコンパイラからの C++ オブジェクトと互換性がありません。
関連情報
LLVM コンパイラインフラストラクチャ
非機密扱いPDF file icon PDF 版ARM DUI0808CJ
Copyright © 2014, 2015 ARM.All rights reserved.