Non-copyableWrite a move constructor and Non-copy-constructable. I prefer to deal with smart pointersthen use emplace_back:
struct std:value { ... value(value && obj) :vector<std i_(obj.i_) { } or value(value && obj) = default; ... }; std::unique_ptr<value>>vector<value> v; for (int i=0; i<10; i++) v.emplace_back(new value(7));