2#ifdef USE_INITIALIZER_LIST
28 std::atomic<Node*>
next{
nullptr};
29 std::atomic<Node*>
prior{
nullptr};
41 if (
node !=
nullptr) {
60 if (
node !=
nullptr) {
122 for (
int j = 0;
j < offset && tmp !=
nullptr;
j++) {
129 }
else if (offset < 0) {
130 for (
int j = 0;
j < -offset && tmp !=
nullptr;
j++) {
164 for(
int i = 0; i < N; ++i) {
173#ifdef USE_INITIALIZER_LIST
190 if (node ==
nullptr)
return false;
197 node->
next.store(&
last, std::memory_order_relaxed);
203 expected_next, node, std::memory_order_release, std::memory_order_relaxed)) {
208 expected_prior, node, std::memory_order_release, std::memory_order_relaxed)) {
222 if (node ==
nullptr)
return false;
229 node->
prior.store(&
first, std::memory_order_relaxed);
235 expected_prior, node, std::memory_order_release, std::memory_order_relaxed)) {
240 expected_next, node, std::memory_order_release, std::memory_order_relaxed)) {
254 if (node ==
nullptr)
return false;
262 if (prior ==
nullptr)
return false;
265 node->
prior.store(prior, std::memory_order_relaxed);
270 if (prior->
next.compare_exchange_weak(
271 expected_next, node, std::memory_order_release, std::memory_order_relaxed)) {
276 expected_prior, node, std::memory_order_release, std::memory_order_relaxed)) {
310 if (
next_node->prior.compare_exchange_weak(
311 first_data, &
first, std::memory_order_release, std::memory_order_relaxed)) {
337 last_data, &
last, std::memory_order_release, std::memory_order_relaxed)) {
366 if (
next_node->prior.compare_exchange_weak(
425 for (
int j = 0;
j < index && n != &
last;
j++) {
426 n = n->
next.load(std::memory_order_acquire);
460 if (node !=
nullptr) {