I am wondering when we can drop support for g++-8. All supported operating systems, except for CentOS Stream 8 offer a greater version:

* Ubuntu Focal: gcc 9 (https://packages.ubuntu.com/focal/gcc)
* Debian Bullseye: gcc 10 (https://packages.debian.org/bullseye/gcc)
* CentOS 8 Stream: gcc 8, with EOL of " May 31st, 2024 " (https://www.centos.org/centos-stream/)

The rationale for dropping it would be that there are currently occasional compile failures with perfectly valid C++-17 code, for example:

* `error: call to non-‘constexpr’ function ‘void __assert_fail(const char*, const char*, unsigned int, const char*)’ assert(false);` (https://godbolt.org/z/bxaMnfcsa)
CANDIDATE_READY,
    /** The best CANDIDATE for a given txhash; only if there is no REQUESTED announcement already for that txhash.
     *  The CANDIDATE_BEST is the highest-priority announcement among all CANDIDATE_READY (and _BEST) ones for that
     *  txhash. */
    CANDIDATE_BEST,
    
    REQUESTED,
    
    COMPLETED,
};
using SequenceNumber = uint64_t;
struct Announcement {
    
    const uint256 m_txhash;
    
    std::chrono::microseconds m_time;
    
    const NodeId m_peer;
    
    const SequenceNumber m_sequence : 59;
    
    const bool m_preferred : 1;
    
    const bool m_is_wtxid : 1;
    /** What state this announcement is in.
     *  This is a uint8_t instead of a State to silence a GCC warning in versions prior to 8.4 and 9.3.
     *  See https:gcc.gnu.org/bugzilla/show_bug.cgi?id=61414 */
    uint8_t m_state : 3;
    
    State GetState() const { return static_cast<State>(m_state); }