From: James T. <ja...@fl...> - 2020-06-19 15:07:14
|
> On 18 Jun 2020, at 21:30, James Turner <ja...@fl...> wrote: > > If you’re developing on ‘something fairly recent’, you shouldn’t see any difference except it would be a wise time to wipe your build dirs and re-CMake from clean. If you’re on a ‘somewhat older’ Linux, the baselines being Ubuntu 18.04 (their previous LTS) and CentOS 7 (which our Jenkins runs), you should also be fine except for GCC, where you will need a version supporting C++14: in practice this means GCC 5.x or higher. (Or use Clang…) For both of these distros there are officially supported ways to get newer GCCs (we’re actually using GCC 9 on Jenkins now..), so I don’t expect this to be a problem. I was thinking on this, and I have a crazy idea: let’s got to C++17. I had guessed this would be tricky because the stock compiler on the baseline distros (Centos 7 and Ubuntu Bionic) wouldn’t support it. But I hadn’t realised how ‘officially’ the distros let you use a different, more modern compiler. Eg it was the work of five minutes to be using GCC 9 on CentOS 7. And I believe it’s equally easy on older Ubuntu/Debian. Give there is no issue on macOS and Windows as usual, is there any reason **not** to go to C++17? Since it would enable even more nice things, make de-Boost-ification even easier, etc. And generally make us more appealing as a project to hack on for current C++ developers, since they can use the shiny new stuff and less of the crusty old stuff. This means requiring probably GCC 6 or 7 : we could do either, probably I’d go for GCC 6 and then check for other pieces using CMake cxx_feature checks. The relevant table is here: https://gcc.gnu.org/projects/cxx-status.html#cxx17 <https://gcc.gnu.org/projects/cxx-status.html#cxx17> Opinions either way are welcome, since we can currently change very easily. What we don’t want to do is start using C++17 and then roll it back, that would suck. (I’ve done it once for my day job, at least we were getting paid by the hour…) BTW, I promise not to suggest C++20 tomorrow, even though it adds the spaceship operator! Kind regards, James |