This is being emitted with [GCC 10.2.1](https://packages.debian.org/bullseye/g++-arm-linux-gnueabihf), in some CI jobs: i.e https://github.com/bitcoin/bitcoin/pull/25972/checks?check_run_id=12423693655, or https://github.com/bitcoin/bitcoin/pull/25972/checks?check_run_id=12423693651 (where we actually turn on all our warning flags with depends builds).
```bash
In file included from test/miniscript_tests.cpp:19:
./script/miniscript.h:1197:71: error: comparison of integers of different signs: 'typename iterator_traits<int *>::difference_type' (aka 'int') and 'const uint32_t' (aka 'const unsigned int') [-Werror,-Wsign-compare]
                    return std::count(subs.begin(), subs.end(), true) >= node.k;
                           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^  ~~~~~~
test/miniscript_tests.cpp:346:34: note: in instantiation of function template specialization 'miniscript::Node<CPubKey>::IsSatisfiable<(lambda at test/miniscript_tests.cpp:346:48)>' requested here
        bool satisfiable = node->IsSatisfiable([](const Node&) { return true; });
                                 ^
1 error generated.
```

cc @darosior 
std::vector<InputStack> next_sats;
                        next_sats.push_back(sats[0] + res.nsat);
                        for (size_t j = 1; j < sats.size(); ++j) next_sats.push_back((sats[j] + res.nsat) | (std::move(sats[j - 1]) + res.sat));
                        next_sats.push_back(std::move(sats[sats.size() - 1]) + std::move(res.sat));
                        
                        sats = std::move(next_sats);
                    }
                    
                    
                    InputStack nsat = INVALID;
                    for (size_t i = 0; i < sats.size(); ++i) {
                        
                        
                        
                        
                        
                        
                        if (i != 0 && i != node.k) sats[i].SetMalleable().SetNonCanon();
                        
                        if (i != node.k) nsat = std::move(nsat) | std::move(sats[i]);
                    }
                    assert(node.k <= sats.size());
                    return {std::move(nsat), std::move(sats[node.k])};
                }
                case Fragment::OLDER: {
                    return {INVALID, ctx.CheckOlder(node.k) ? EMPTY : INVALID};
                }
                case Fragment::AFTER: {
                    return {INVALID, ctx.CheckAfter(node.k) ? EMPTY : INVALID};
                }