Почему std::atomic::store можно переместить перед инициализацией аргумента во время выполнения?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Почему std::atomic::store можно переместить перед инициализацией аргумента во время выполнения?

Сообщение Anonymous »

Я читаю это: https://www.open-std.org/jtc1/sc22/wg21 ... 292r0.html
Вот пример кода, о котором идет речь:

Код: Выделить всё

int dummy;
std::atomic ptr_to_int_1{&dummy};
std::atomic ptr_to_int_2{&dummy};

void t1() {
int* q = ptr_to_int_1.load(relaxed);
int* p = f(q);
// Can get moved before the load of ptr_to_int_1
ptr_to_int_2.store(p, relaxed);
}
В документе говорится, что ptr_to_int_2.store можно переместить в начало t1. Почему это разрешено? Что касается меня, вызов не может идти перед строкой int* p = ..., поскольку вычисление p является обязательным условием для вызова store.

Подробнее здесь: https://stackoverflow.com/questions/797 ... tion-in-ru
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»