-
Notifications
You must be signed in to change notification settings - Fork 323
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Switch to C++20 #856
Switch to C++20 #856
Conversation
This change produces quite a lot of warnings even on GCC (which usually seems less picky than Clang), so I'm leaving this PR as a draft to have a closer look at those. |
Thanks for giving this a go. Maybe we could enable |
Agreed. Also, once the build is free of warnings we could leave the Regarding the warnings themselves, all of them originate in external libraries: rapidjson and polylineencoder. Perhaps just updating to newer versions would fix those. |
Thanks for enabling the flag.
That was also my first idea but I have to admit that this article makes a quite convincing point.
Then that's a different problem. I'd expect suppressing warnings in polylineencoder should be pretty straightforward, and the changes would probably be gladly accepted upstream. On the other hand I don't think we could have much control on rapidjson itself. The version we ship is old: basically |
Wow, that was fast! vahancho/polylineencoder#14 + https://github.com/vahancho/polylineencoder/releases/tag/v2.0.1 |
I'm myself surprised :-)
What is the upstream repo? Is it https://github.com/Tencent/rapidjson? If so, the latest release is still 1.1.0, but there have been some development since. |
Yes, for the record there is an epic thread over there at issue 1006 dating back from 2017 (!) basically asking for a new release that never happened so far. AFAICT by using my memory and diffing the upstream repo and our There have been 725 (!!) commits to the I guess one of the ways to decide if it's worth doing a wild upgrade would be to check if it would fix the C++20 warnings in the first place? |
I see.
I agree that taking something that even the authors do not think warrants a tag is risky and uncomfortable at best.
This is a good idea. I will give it a go. |
I've forced a re-run on the job that previously failed due to install errors. Now we get a proper failure due to a warning while building |
After updating polylineencoder to v2.0.1 both g++ and clang++ builds are clean. |
Thanks for testing this, now we know that we can easily get away with the warnings if we update. I guess it now comes down to 2 options:
|
@kkarbowiak sorry for the delay here. I finally went with option 1. and updated Rapidjson (now as a submodule). Most of the changes in this PR have been necessary for experimentation but are now somehow void. Shall we close and open another PR? I also ticketed the necessary polylineencoder update in #931. |
No worries. I was also focusing on some other stuff.
Alright. This PR is still a draft and I'm ok with closing it.
Cool. |
Issue #851
Switch to C++20.
Tasks
CHANGELOG.md
(remove if irrelevant)