Когда имеет смысл использовать unique_ptr с контейнерами STL? (C ++ 11)

Контейнер 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;
}


Следующие вопросы помогли мне найти эти обходные пути:

6
задан Community 23 May 2017 в 12:14
поделиться