У меня есть код, в котором я хочу быть абсолютно уверенным, что перемещенный из std::vector
не оставит секретные данные рядом (подумайте об управлении крипто-ключами).В конструкторе перемещения моего класса я делаю что-то вроде:
X(X&& rhs): secret_vector{std::move(rhs.secret_vector)}{
rhs.secret_vector.resize(N);
safe_zero(rhs.secret_vector); // zero out all elements
rhs.secret_vector.resize(0);
}
Как вы можете видеть, я снова использую секретный вектор после перемещения из него.Я посмотрел на
Повторное использование перемещенного контейнера?
, но было не совсем ясно, что я могу сделать это (я не понимал, что на самом деле являются "предварительными условиями")).
Мой вопрос: можно ли изменить размер перемещенного из std :: vector, выполнить с ним некоторую операцию, а затем изменить его размер до нуля?