У меня есть класс А, который перегружает его оператор =. Однако требуется, чтобы мне нужно было сделать что-то вроде этого:
volatile A x;
A y;
x = y;
который вызвал ошибку при компиляции
error: no operator "=" matches these operands
operand types are: volatile A = A
Если я удалю volatile, он будет компилироваться. Есть ли способ скомпилировать этот файл без удаления "изменчивого" (и по-прежнему сохранять поведение волатильности)?
В основном это программа CUDA, в которой "x" является общей памятью (все потоки могут получить доступ и изменить ее значение). Я хочу, чтобы он был "изменчивым", чтобы избежать оптимизации компилятора и повторного использования значения вместо доступа к адресу памяти.
Подробнее о проблеме: в начале A является просто примитивным типом, например, integer, volatile работает как ожидалось и не вызывает никаких проблем, теперь я хочу, чтобы это был пользовательский класс (например, 128-битный). Я не уверен, почему С++ жалуется в этом случае, но не на примитивный тип данных.
Спасибо заранее.