Use C++17 on the CTP7
Currently, the CTP7 is limited to C++11 (with a non-fully compliant C++11 standard library) with some parts from C++14 (GCC 4.9.2). In addition of not providing the latest, very convenient, C++ features, it create an imbalance better the
gemrpc module and the other
cmsgemos modules. This is particularly striking in the
xhal library/framework which must be compatible with this old compiler although it would clearly benefit from C++17 features.
As long as
rcpsvc, or any other system-compiled C++ library, is involved it is not possible to use a completely different toolchain than the one that has been used to compile the CTP7 Linux image.
Nevertheless, it is possible to safely compile the CTP7 software with modern LLVM releases (which natively support cross-compilation) as long as the system C++ standard library is used (Xilinx SDK 2016.2 or Linaro 4.9.2). Although it won't provides all the C++17, the new language features will be available (
constexpr if, structured bindings, nested namespaces,...)
The change in the CTP7 toolchain is simple and
clang 7.0 is already installed on the main development machine and CI in order to get
clang-format. Careful tests are required, but no major issue is expected.