#include #include #include #include #include int main() { std::list pending{"parse", "compile", "link"}; std::list running{"fetch"}; auto job = std::next(pending.begin()); const std::string* address = &*job; running.splice(running.end(), pending, job); assert(&*job == address && *job == "compile"); assert((pending == std::list{"parse", "link"})); assert((running == std::list{"fetch", "compile"})); running.splice(running.begin(), running, job); assert(running.front() == "compile"); auto next = running.erase(job); assert(next != running.end() && *next == "fetch"); std::cout << pending.size() << ' ' << running.front() << '\n'; }