Здравствуйте, Shmj, Вы писали:
то, что vector (и не только он) скрытно может копировать данные — это действительно проблема всей stl. Я бы решал её переопределением своего "пуританского" вектора (без блекджека).
template <typename T>
class greedy_vector : public std::vector<T> {
public:
using std::vector<T>::vector;
greedy_vector explicit_copy() const {
return *this;
}
private:
greedy_vector(const greedy_vector& other): std::vector<T>(other) {}
};
теперь просто так не скопируешь:
greedy_vector<int> data{100};
const auto copy = data; // ошибка