Standard C++ library implementation definition
The Standard C++ library in ARM® Compiler 6 is implemented by libc++, with some limitations.
Support for C++11
ARM Compiler 6 libc++ libraries support the majority of C++11. The major limitations are that the Atomic operations library <atomic> and the Thread support library <thread> are not supported.
Support for exceptions
The libc++ libraries support the use of C++ exceptions. The code-size and performance of C++ exceptions in libc++ has not been optimized.
-fno-exceptions and libc++
- ARM Compiler 6
does not contain variants of libc++
that are built with
-fno-exceptions. Therefore, exceptions might be thrown from pre-built libc++ objects. If a C++ exception from libc++ propagates into code built with
-fno-exceptions, then the program terminates.
- The parts of libc++
that are implemented in header files might be compiled with
-fno-exceptionsis used libc++ calls the assert macro instead of throwing an exception.
NoteThese assert macros are removed if the macro
Support for use of standard streams in static initializers
During static initialization, ARM Compiler 6 does not support the use
of the standard streams
cerr that are defined in
<iostream>. The libc++ library does not guarantee that these streams are
initialized before other static initializers are called.
Support for multithreading
ARM Compiler 6 does not support multithreading for libc++. The libc++ libraries have not been built with multithreading support, and both the Atomic operations library and the Thread support library are not supported.
Support for Array Construction and Delete helper functions
ARM Compiler 6 is not compatible with C++ objects from other compilers that use Array Construction and Delete helper functions.