Time for C++20.
Bills, Jason M
jason.m.bills at linux.intel.com
Thu Apr 15 07:12:44 AEST 2021
On 4/14/2021 1:11 PM, Patrick Williams wrote:
> Hello.
>
> Per [1], as a project we've generally committed to using the latest C++
> standard. C++20 was released in early Sept. 2020 and already had pretty
> decent compiler support at the time it was released. We're currently
> using GCC10 and according to [2] it has support for nearly every C++20
> feature I could see us regularly wanting to use(*). It seems like it
> is a reasonable time for us to move on to it.
>
> * - Except I recall seeing some mention of std::source_location being
> useful to fix some of the issues with phosphor-logging, but that
> won't be available until GCC11.
>
> In general the C++ standard is backwards compatible. This shouldn't
> have any impact if you are writing C++17-only code. What it allows us
> to do is to start using features out of C++20 like the spaceship
> operator and ranges.
>
> I've put up some commits to start this process. So far the only hiccup
> I've ran into is that you need Meson 0.57.0 or higher in order for it to
> recognize the 'cpp_std=c++20' option. I am adding code to our unit-test
> framework to ensure you have this specified in your `meson.build` if you
> are requesting C++20.
>
> - https://gerrit.openbmc-project.xyz/c/openbmc/openbmc-build-scripts/+/42252
> * Adds some checking to ensure you've specified a meson_version
> in your meson.build that can handle C++20.
>
> - https://gerrit.openbmc-project.xyz/c/openbmc/docs/+/42255
> * Update C++ style doc from C++17 to C++20.
>
> - https://gerrit.openbmc-project.xyz/c/openbmc/sdbusplus/+/42256
> * Update sdbusplus to use C++20.
>
> Please let me know if you have any concerns with this upgrade; I'll be
> surprised if this not a fairly low-contention move.
+1
I just discovered starts_with() will be available for std::string which
I want to use. I turned it on locally and didn't have any issues.
coroutines are also an interesting possibility for some of our async calls.
>
> 1. https://github.com/openbmc/docs/blob/master/cpp-style-and-conventions.md#code-should-be-written-with-modern-practices
> 2. https://en.cppreference.com/w/cpp/20
>
More information about the openbmc
mailing list