Skip to content

switch C++ support to C++17

Steve Lhomme requested to merge robUx4/vlc:c++17 into master

In preparation for the switch to Qt6 we need to support C++17.

As contribs keep being updated with newer versions of the language, we need to support a more modern version of C++ going forward.

Setting -std=c++17 should not break existing contribs that are built with C++11 or C++14. In fact we already support the mix of versions between 11 and 14 without problem. Modern C++ compilers are designed to take care of this [1]. When switching to a new C++ version there might however be some slight differences on how the code is interpreted. These differences [2] might trigger some build errors for removed parts.

I also did an analysis on the added requirements on the compiler versions we support. That means using gcc 7 or clang 4 rather than the current gcc 5 and clang 3.4 we currently require. However given the restrictions for each OS, we already need higher support for these. Systems with older compilers that really want to have VLC 4 would not get the C++ modules from VLC, mostly notably the Qt interface. But that's the one that will really require C++17 anyway.

[1] https://stackoverflow.com/questions/46746878/is-it-safe-to-link-c17-c14-and-c11-objects [2] https://www.open-std.org/JTC1/SC22/WG21/docs/papers/2018/p0636r3.html

Merge request reports