Как я могу реализовать счетчик ABA с C ++ 11 CAS?

Я реализую очередь без блокировки на основе этогоалгоритм, который использует счетчик для решения проблемы ABA. Но я не знаю, как реализовать этот счетчик с C ++ 11 CAS. Например, из алгоритма:

E9:    if CAS(&tail.ptr->next, next, <node, next.count+1>)

Это атомарная операция, то есть еслиtail.ptr->next&nbsp;равноnext, позволятьtail.ptr->next&nbsp;указать наnode&nbsp;а такжеодновременно (атомарно)&nbsp;делатьnext.count+1, Однако, используя C ++ 11 CAS, я могу реализовать только:

std::atomic_compare_exchange_weak(&tail.ptr->next, next, node);

который не может сделатьnext.count+1&nbsp;одновременно случиться.