<!-- Start of markdown source --> # C++14 Support for ARM and MSP Compilers As of compiler release version 18.1.0.LTS, the Texas Instruments ARM and MSP430 compilers support the C++14 version of the C++ standard. (ISO/IEC 14882:2014) However, some language features are currently unsupported. * Concurrency (e.g.: std::thread, std::atomic, and associated helpers) * New character types (e.g.: Header files: uchar.h and cuchar) * Unicode string literals (e.g.: U"string", u"string", u8"string") * Universal character names in literals (e.g.: "\u0123") The standard library used to implement many of C++'s features has been changed to LLVM's libc++. ([link](https://libcxx.llvm.org/)) While modified by TI, library support most closely resembles that of libc++ 5.0.1. Supported compilers default to and only support C++14 mode for compilation of C++ source files. C++14 object files are incompatible with C++03 object files. C compatibility is not affected by this change. While most C++03 should compile without a problem, there are a couple of incompatibilities at the language level you might encounter while recompiling your old C++ source code: ## New Keywords * **alignas** * **alignof** * **char16_t** * **char32_t** * **constexpr** * **decltype** * **noexcept** * **nullptr** * **static_assert** * **thread_local** ## Repurposed or deprecated keywords * **auto** is no longer a storage class specifier, but has been repurposed as a type specifier * **register** has been deprecated and will be removed in a later version ## Aggregate initialization no longer allows narrowing conversions ```cpp int x[] = { 2.0 }; // Previously compiled, but now results in a syntax error ``` ## New literal prefixes and suffixes could cause macro replacement to fail ```cpp #define u8 "abc" const char *s1 = u8"def"; // Previously "abcdef", now "def" #define _x "there" const char *s2 = "hello "_x; // Previously "hello there", now a syntax error ``` <!-- End of markdown source --> <div id="footer"></div>