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)
{
        assert(it != m_index.get<ByTxHash>().end());
        assert(it->GetState() == State::CANDIDATE_DELAYED);
        
        Modify<ByTxHash>(it, [](Announcement& ann){ ann.SetState(State::CANDIDATE_READY); });
        
        
        
        
        auto it_next = std::next(it);
        if (it_next == m_index.get<ByTxHash>().end() || it_next->m_txhash != it->m_txhash ||
            it_next->GetState() == State::COMPLETED) {
            
            
            Modify<ByTxHash>(it, [](Announcement& ann){ ann.SetState(State::CANDIDATE_BEST); });
        } else if (it_next->GetState() == State::CANDIDATE_BEST) {
            Priority priority_old = m_computer(*it_next);
            Priority priority_new = m_computer(*it);
            if (priority_new > priority_old) {
                
                Modify<ByTxHash>(it_next, [](Announcement& ann){ ann.SetState(State::CANDIDATE_READY); });
                Modify<ByTxHash>(it, [](Announcement& ann){ ann.SetState(State::CANDIDATE_BEST); });
            }
        }
    }
    
    
    void ChangeAndReselect(Iter<ByTxHash> it, State new_state)