Tengo una clase A que sobrecargo su operador =. Sin embargo, se requiere que tengo que hacer algo como esto:C++ volátil y sobrecarga del operador para la aplicación CUDA
volatile A x;
A y;
x = y;
cual produce un error durante la compilación de
error: no operator "=" matches these operands
operand types are: volatile A = A
Si me quita volátil, es compilables. ¿Hay alguna forma de tener esto compilado sin eliminar el "volátil" (y aún así mantener el comportamiento de volátil)?
Básicamente, este es un programa CUDA en la que 'x' es una memoria compartida (todas las discusiones pueden acceder y modificar su valor). Quiero que sea "volátil" para evitar la optimización del compilador y reutilizar el valor en lugar de acceder a la dirección de la memoria.
Más sobre el problema: al principio A es simplemente un tipo primitivo, por ejemplo, entero, volátil funcionó como se esperaba y no causa ningún problema, ahora quiero que sea una clase personalizada (entero de 128 bits por ejemplo) . No estoy seguro de por qué C++ se queja en este caso, pero no con el tipo de datos primitivos.
Gracias de antemano.
Gracias! Está compilado. pero muy mal :(, me da el mismo comportamiento de – w00d
no volátil @iKid: ¿qué comportamiento esperabas de 'volátil'? –
Agregué una explicación a mi pregunta – w00d