Ich implementiere Move Construct/Assign-Operationen für ein Objekt, das auf einige Daten auf dem Heap zeigt.Force Test des Move Konstruktors?
Ich teste move construct/assign und kopiere construct/assign, alles baut und alles funktioniert außer move construct. (Move-Zuweisung funktioniert).
Ich kann nicht scheinen, den Debugger zu stolpern, der Move-Konstruktor-Code wird nicht erreicht.
Ich bin sicher, es gibt etwas einfaches, das ich vermisse?
Der Umzug Konstruktor ...
//...
HeapBuffer (HeapBuffer&& other) // move
: data {other.data},
size {other.size}
{
assert(false); // hmm can't seem to debug to here in testing :(
other.data = nullptr;
other.size = 0;
}
//...
Die Testfunktion ...
ado::HeapBuffer<2048> makeHeapBuffer2048() // test move semantics
{
ado::HeapBuffer<2048> hb2048;
hb2048[777] = 123.0f;
return hb2048;
}
Die Berufung Test ...
beginTest ("HeapBuffer move constructor"); // hmmm can't seem to get to the move constructor,
// strange because all the others work!?!?
{
ado::HeapBuffer<2048> hb {makeHeapBuffer2048()};
expectEquals (hb[777], 123.0f);
}
Ich will hinzufügen, dass, wenn ich ändern der Move-Konstruktor zu ...
HeapBuffer (HeapBuffer&&) = delete;
... der Build schlägt am erwarteten Punkt fehl (d. H. durch den Test gestolpert).
elision sollte tritt wahrscheinlich – Jarod42
Suche nach "C++ elision kopieren". – nwp