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) 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
int x[] = { 2.0 }; // Previously compiled, but now results in a syntax error
New literal prefixes and suffixes could cause macro replacement to fail
#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