This required some adjustments:
* New warnings character-conversion and deprecated-volatile are
disabled for the reasons indicated in the adjacent comments.
* C23 is a lot stricter about function pointer signatures so some
callbacks in gnc-frequency.c and dialog-sx-editor had to be cast using
the long-available GLib macros.
* C++23 is stricter about a reference (foo&) parameter taking an
lvalue only; a lambda used in several csv-importer files was trying to
pass an rvalue so the parameter had to be changed to perfect
forward (foo&&).
* C++23 doesn't allow oring together enum values from different enum
types, even anonymous ones, so the two gnc_numeric enums for rounding
and denominators are combined into a single enum GncNumericRoundDenom.
* C++20's new automatic generation of comparison functions combined
with its stricter automatic conversion rules caused trouble with
operator==() and operator!=() for gnc::GUID and GncGUID, complaining
about ambiguity or not being able to find operator==(const GncGuid&,
const GncGuid&). The fix has two parts: Changing operator!=(const
gnc::GUID&, const gnc::GUID&) to operator==(const gnc::GUID&, const
gnc::GUID&) to resolve the conversion problem and changing the call
forwarding operator==(const GncGuid&, const GncGuid&) to only cast the
first argument to gnc::GUID so that it could work unambiguously with
operator==(const gnc::GUID&, const GncGuid&).
* python sqlite3test: C23 apparently makes AppleClang a lot pickier
about includes.
ubuntu-latest isn't latest enough. Recent lcov v2 errors
out if there are no GCDA files in the target directory.
Call it with a shell script that checks first.
Something has changed in the Ubuntu runner that causes a build
failure on a commit that passed a few days ago, so disable the
job until we can figure out what's wrong.