The C7000 compiler supports C++ as defined in the ANSI/ISO/IEC 14882:2014 standard
(C++14), including these features:
- Complete C++ standard library support,
with exceptions noted below.
- Templates
- Exceptions, which are enabled with the
--exceptions option; see Section 5.6.
- Run-time type information (RTTI) cannot be
disabled. The metadata for a virtual class refers to the class' type_info object so that
the class' actual type can be determined at run-time.
The compiler supports the
2014 standard of C++ as standardized by the
ISO. However, the following features are not implemented or fully supported:
- The compiler does not support embedded
C++ run-time-support libraries.
- The library supports wide chars
(wchar_t), in that template functions and classes that are defined for char are also
available for wchar_t. For example, wide char stream classes wios, wiostream, wstreambuf
and so on (corresponding to char classes ios, iostream, streambuf) are implemented.
However, there is no low-level file I/O for wide chars. Also, the C library interface to
wide char support (through the C++ headers <cwchar> and <cwctype>) is limited
as described above in the C library.
- No support
for bad_cast or bad_type_id is included in the typeinfo header.
- Constant expressions for target-specific types are only partially supported.
- New character types (introduced in the C++11 standard) are not supported.
- Unicode string literals (introduced in the C++11 standard) are not supported.
- Universal character names in literals (introduced in the C++11 standard) are not
supported.
- Atomic operations
(introduced in the C++11 standard) are not supported.
- Data-dependency
ordering for atomics and memory model (introduced in the C++11 standard) is not
supported.
- Allowing atomics in
signal handlers (introduced in the C++11 standard) is not supported.
- Strong compare and exchange (introduced in the C++11 standard) are not supported.
- Bidirectional fences (introduced in the C++11 standard) are not supported.
- Memory model (introduced in the C++11 standard) is not supported.
- Propagating exceptions (introduced in the C++11 standard) is not supported.
- Thread-local storage (introduced in the C++11 standard) is not supported.
- Dynamic initialization and destruction with concurrency (introduced in the C++11
standard) is not supported.