Допустим есть у нас следующее:
#include <memory>
#include <vector>
#include <iostream>
using namespace std;
class Base {
int i;
public:
Base(int ai) : i(ai){}
virtual ~Base() {}
virtual void m() {
cout << "Base::m() " << i << endl;
}
};
class A : public Base {
public:
A() : Base(1) {}
virtual ~A() {}
};
class B : public Base {
char c;
public:
B(char ac) : Base(2), c(ac) {}
virtual ~B() {}
virtual void m() {
Base::m();
cout << "B::m() " << c << endl;
}
};
int main(){
vector<unique_ptr<Base>> v{
/* ??? */
};
for (auto& a : v)
a->m();
}
Что нужно написать, что бы инициализировать v значениями new Base(10), new A(), new B('x')?
make_unique<Base>(), unqiue_ptr<Base>(new ??()) не работают.