Apakah standar menentukan dengan tepat apa yang dapat saya lakukan dengan suatu objek setelah dipindahkan? Saya dulu berpikir bahwa semua yang dapat Anda lakukan dengan objek yang dipindahkan adalah melakukan perusakan, tetapi itu tidak akan cukup.
Misalnya, ambil templat fungsi swap
seperti yang didefinisikan di pustaka standar:
template <typename T>
void swap(T& a, T& b)
{
T c = std::move(a); // line 1
a = std::move(b); // line 2: assignment to moved-from object!
b = std::move(c); // line 3: assignment to moved-from object!
}
Jelas, harus mungkin untuk menetapkan objek-objek yang dipindahkan, jika tidak, baris 2 dan 3 akan gagal. Jadi apa lagi yang bisa saya lakukan dengan objek yang dipindahkan? Di mana tepatnya saya dapat menemukan detail ini dalam standar?
(Ngomong-ngomong, mengapa T c = std::move(a);
bukannya T c(std::move(a));
di baris 1?)
pop_back
pindah-darivector
. Tapi Anda tentu bisa mengetahuinyaempty()
.