Я реализую незаблокированную очередь на основе этого алгоритма, который использует счетчик для решения проблемы ABA. Но я не знаю, как реализовать этот счетчик с С++ 11 CAS. Например, из алгоритма:
E9:    if CAS(&tail.ptr->next, next, <node, next.count+1>)
Это атомная операция, то есть если tail.ptr->next равно next, пусть tail.ptr->next указывает на node и  одновременно (атомарно) сделать next.count+1. Однако, используя С++ 11 CAS, я могу реализовать только:
std::atomic_compare_exchange_weak(&tail.ptr->next, next, node);
 который не может сделать next.count+1 одновременно.
