Ich habe eine Klasse A, die ich überfordere Operator =. Allerdings ist es erforderlich, dass ich so etwas wie dies tun müssen:C++ flüchtige und Operatorüberlastung für CUDA-Anwendung
volatile A x;
A y;
x = y;
, die einen Fehler ausgelöst beim Kompilieren
error: no operator "=" matches these operands
operand types are: volatile A = A
Wenn ich flüchtig entfernt, es ist übersetzbar. Gibt es trotzdem eine solche kompiliert, ohne die "volatile" zu entfernen (und das Verhalten von volatile beibehalten)?
Im Grunde ist dies ein Programm, in dem CUDA ‚X‘ ist ein gemeinsam genutzter Speicher (alle Threads können ihren Wert zugreifen und diese ändern). Ich möchte, dass es "flüchtig" ist, um die Compileroptimierung zu vermeiden und den Wert wiederzuverwenden, anstatt auf die Speicheradresse zuzugreifen.
Mehr zu dem Problem: am Anfang A ist nur ein primitiver Typ, zB ganze Zahl, volatile funktionierte wie erwartet und verursacht kein Problem, jetzt möchte ich, dass es eine benutzerdefinierte Klasse (Integer 128-Bit zum Beispiel) . Ich bin mir nicht sicher, warum C++ in diesem Fall klagen, aber nicht mit primitiven Datentyp.
Vielen Dank im Voraus.
Danke! Es ist kompiliert. aber schade :(, es gibt mir das gleiche Verhalten von nichtflüchtigen – w00d
@iKid: Welches Verhalten erwartetest du von 'volatile'? –
Ich fügte meiner Frage – w00d