Контейнер unique_ptr
кажется бессмысленным: вы не можете использовать его со списками инициализаторов, и мне не удалось выполнить итерацию по контейнеру (обходные пути ниже). Я что-то не понимаю? Или когда имеет смысл использовать контейнеры unique_ptr
и STL?
#include
#include
using namespace std;
struct Base { void go() { } virtual ~Base() { } };
// virtual ~Base() = default; gives
// "declared virtual cannot be defaulted in the class body" why?
class Derived : public Base { };
int main() {
//vector> v1 = { new Derived, new Derived, new Derived };
//vector> v2 = { new Derived, new Derived, new Derived };
vector v3 = { new Derived, new Derived, new Derived };
vector> v4(v3.begin(), v3.end());
vector> v5(v3.begin(), v3.end());
for (auto i : v5) { // works with v4
i->go();
}
return 0;
}
Следующие вопросы помогли мне найти эти обходные пути: