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)
Modify<ByTxHash>(it_old, [](Announcement& ann) { ann.SetState(State::CANDIDATE_READY); });
                } else if (it_old->GetState() == State::REQUESTED) {
                    
                    
                    Modify<ByTxHash>(it_old, [](Announcement& ann) { ann.SetState(State::COMPLETED); });
                }
            }
        }
        Modify<ByPeer>(it, [expiry](Announcement& ann) {
            ann.SetState(State::REQUESTED);
            ann.m_time = expiry;
        });
    }
    void ReceivedResponse(NodeId peer, const uint256& txhash)
    {
        
        auto it = m_index.get<ByPeer>().find(ByPeerView{peer, false, txhash});
        if (it == m_index.get<ByPeer>().end()) {
            it = m_index.get<ByPeer>().find(ByPeerView{peer, true, txhash});
        }
        if (it != m_index.get<ByPeer>().end()) MakeCompleted(m_index.project<ByTxHash>(it));
    }
    size_t CountInFlight(NodeId peer) const
    {
        auto it = m_peerinfo.find(peer);
        if (it != m_peerinfo.end()) return it->second.m_requested;
        return 0;
    }
    size_t CountCandidates(NodeId peer) const