Ho una classe A che sovraccarico il suo operatore =. Tuttavia è necessario che ho bisogno di fare qualcosa di simile:C++ volatile e sovraccarico dell'operatore per l'applicazione CUDA
volatile A x;
A y;
x = y;
che ha sollevato un errore durante la compilazione
error: no operator "=" matches these operands
operand types are: volatile A = A
Se ho rimosso volatili, è compilabile. Esiste comunque la possibilità di averlo compilato senza rimuovere il "volatile" (e mantenere comunque il comportamento di volatile)?
Fondamentalmente questo è un programma CUDA in cui 'x' è una memoria condivisa (tutte le discussioni possono accedere e modificare il suo valore). Voglio che sia "volatile" per evitare l'ottimizzazione del compilatore e riutilizzare il valore invece di accedere all'indirizzo di memoria.
Ulteriori informazioni sul problema: all'inizio A è solo un tipo primitivo, ad esempio intero, volatile ha funzionato come previsto e non causa alcun problema, ora voglio che sia una classe personalizzata (numero intero a 128 bit, ad esempio) . Non sono sicuro del motivo per cui C++ si lamenta in questo caso ma non con il tipo di dati primitivi.
Grazie in anticipo.
Grazie! È compilato ma troppo male :(, mi dà lo stesso comportamento di non volatile – w00d
@iKid: quale comportamento ti aspettavi da 'volatile'? –
Ho aggiunto una spiegazione alla mia domanda – w00d