Ceci est probablement assez similaire à d'autres questions; J'ai regardé autour de moi mais je ne sais pas de quoi je parle assez pour être sûr. J'écris une fonction qui "devrait" être en place, mais qui est implémentée par un appel BLAS. L'appel BLAS n'est pas en place, j'ai donc besoin de faire un temporaire. Ainsi:std :: move pour "opération sur place"
void InPlace(ArrayClass& U, const TransformMatrix* M){
ArrayClass U_temp;
CallBLASdgemm(U, M, U_temp); //Now U_temp contains the correct output.
U = std::move(U_temp);
}
Est-ce une utilisation valable de std::move
, ou suis-je rompent en quelque sorte « copie élision » (ou est-ce mauvais pour une autre raison)? Edit: la signature de CallBLASDgemm a été demandée; c'est
CallBLASdgemm(const ArrayClass& U, const TransformMatrix* M,
ArrayClass& V);
c'est bon. mais si 'ArrayClass' ne supporte pas l'assignation de déplacement, vous le copieriez tout de même. –
Quelle est la signature de 'CallBLASdgemm'? –