Time for C++20.

Patrick Williams patrick at stwcx.xyz
Thu Apr 15 06:11:56 AEST 2021


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. 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
-- 
Patrick Williams
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <http://lists.ozlabs.org/pipermail/openbmc/attachments/20210414/f20a9ae8/attachment.sig>


More information about the openbmc mailing list