Минимальный воспроизводимый пример (соблюдение требований с использованием C++ 20)
Код: Выделить всё
#include
#include
#include
int main() {
union LargeStruct {
char data[1024];
int value;
void operator+(int value) {
this->value += value;
}
};
LargeStruct largeStruct;
memset(&largeStruct, 0, sizeof(largeStruct));
std::atomic_ref atomic_struct(largeStruct);
std::atomic_ref atomic_struct2(largeStruct);
static_assert(sizeof(LargeStruct) > 8, "LargeStruct size should be larger than 8 bytes for this test.");
std::cout
Подробнее здесь: [url]https://stackoverflow.com/questions/79818532/msvc-14-38-33130-does-stdatomic-refis-lock-freehave-a-bug-it-returns-truef[/url]
Мобильная версия