+ lock_free_queue()
+ {
+ counted_node_ptr newnode = {0, new node};
+ head = newnode;
+ tail = head.load();
+ }
+ // lock_free_queue(const lock_free_queue& other)=delete;
+ // lock_free_queue& operator=(const lock_free_queue& other)=delete;
+ ~lock_free_queue()
+ {
+ while(node* const old_head=head.load())
+ {
+ head.store(old_head->next);
+ delete old_head;
+ }
+ }
+