Standart, bir nesne taşındıktan sonra ne yapabileceğimi kesin olarak tanımlıyor mu? Taşınan bir nesne ile yapabileceğiniz tek şeyin onu yıkmak olduğunu düşünürdüm, ama bu yeterli olmazdı.
Örneğin, işlev şablonunu swap
standart kitaplıkta tanımlandığı gibi alın:
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!
}
Açıkçası, taşınan nesnelere atamak mümkün olmalıdır, aksi takdirde 2 ve 3 satırları başarısız olur. Peki taşınan nesnelerle başka ne yapabilirim? Bu ayrıntıları standartta tam olarak nerede bulabilirim?
(Bu arada, neden 1. satır T c = std::move(a);
yerine T c(std::move(a));
?)
pop_back
, taşınmak istemezsinizvector
. Ama kesinlikle olup olmadığını öğrenebilirsinizempty()
.