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