News for hackers. Stuff that matters.
Re:In C++, is empty() faster than comparing the size with zero? by hermitdev on Thursday October 28, 2021 @05:59PM (#29032592)
No, because you'd still need book keeping around the length of [first, last), even if the implementation does under-the-hood O(1) movement of nodes in [first, last) from other to *this. Computing the length of [first, last) is still an O(n) operation for forward iterators.

Maybe you're assuming [first, last) is the entirety of other? For that case, there are overloads for splicing an entire list in O(1) time:

    void splice( const_iterator pos, list& other );
    void splice( const_iterator pos, list&& other );
Re:In C++, is empty() faster than comparing the size with zero? by jfrunyon on Thursday October 28, 2021 @06:53PM (#29033074)
This seems like an extremely niche use-case, compared to the prevalence of use-cases needing to check the size of a list.
Re:In C++, is empty() faster than comparing the size with zero? by ycombobreaker on Thursday October 28, 2021 @08:02PM (#29033645)
This niche is exactly why I've used std::list in several cases. It allows fairly easy preallocation of list nodes.

Fortunately, the single-node splice is still fast. But batch allocations, say related to some scatter/gather operations, would still be hit by this change.