これはおそらく他の質問によく似ています。私はちょっと見渡しましたが、確かに私がよく話していることは分かりません。std :: move in-place operation
私はBLAS呼び出しでインプリメントされているはずの機能を書いています。 BLASコールはインプレースではないので、私は一時的にする必要があります。したがって:
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);
}
これはstd::move
の有効な使用である、または私は何とか「コピーの省略」を壊す(またはそれが他の何らかの理由で悪いです)のですか?
編集:CallBLASDgemmの署名が要求されました。それは
CallBLASdgemm(const ArrayClass& U, const TransformMatrix* M,
ArrayClass& V);
いいです。 'ArrayClass'が移動割り当てをサポートしていなければ、それでもあなたはそれをコピーします。 –
'CallBLASdgemm'の署名は何ですか? –