On the first point, yes I was using rather unhelpful shorthand which I have since clarified,
taken from some code I use specifically for this purpose,.
On the second point, it is certainly not guaranteed. Cases where a lock-free queue implemented
via CAS work well are the cases where (if you want to use the standard containers instead)
splicing std::list is likely to work well also. For queue elements which are scalars or which have
move operators which don't allocate or deallocate, and enough memory has been reserved,
std::deque or std::vector might be better. The important point where contention is likely is to try
and ensure that allocation and deallocation occur outside the container's mutex.
The argument I refute for this particular case is that "on modern hardware std::list is almost
useless".