Рассмотрим следующий код:
#include <set>
template <int n>
std::set<int> utility_function(std::set<int> const & input){
// ...
}
void f(std::set<int> && set1){
std::set<int> set2 = utility_function<1>(set1);
// set1.clear();
std::set<int> set3 = utility_function<2>(set2);
// set2.clear();
std::set<int> set4 = utility_function<3>(set3);
// set3.clear();
// ... use set4, without refering to set1, set2, set3
}
Я знаю, что это может считаться плохой практикой, и есть лучшие способы написания этого кода, но при условии, что это WIP, и я просто пытаюсь получить его работать, прежде чем тратить время на рефакторинг:
Теоретически возможно ли для компилятора очистить неиспользуемые структуры данных set1
, set2
, set3
, как это предлагается в комментариях (или просто освободить основную память )?
Действительно ли компиляторы так делают?