You copied the Doc URL to your clipboard.

Standard C++ library implementation definition

The Standard C++ library in ARM® Compiler 6 is implemented by libc++, with some limitations.


This topic includes descriptions of [COMMUNITY] features.

Support for C++11

ARM Compiler 6 libc++ libraries support the majority of C++11. The major limitations is that the Thread support library <thread> is not supported.

Support for Atomic

[COMMUNITY] ARM Compiler 6 provides access to the Atomic operations library <atomic> as a [COMMUNITY] feature.



ARM Compiler 6 does not provide an implementation of libatomic. You must either provide an implementation of libatomic or only use the atomic operation library for types for which the hardware can provide synchronization primitives.

Support for exceptions

The libc++ libraries support the use of C++ exceptions.

Support for -fno-exceptions and libc++ is limited:

  • 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-exceptions. When -fno-exceptions is used libc++ calls the assert macro instead of throwing an exception.


    These assert macros are removed if the macro NDEBUG is defined.

Support for multithreading

ARM Compiler 6 does not support multithreading for libc++. The libc++ libraries have not been built with multithreading support. The Thread support library is 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.

Was this page helpful? Yes No