со ссылкой на следующий кодКак копирование unique_ptr одного типа в другой работает
#include <iostream>
#include <memory>
using std::cout;
using std::endl;
using std::make_unique;
struct Base {};
struct Derived : public Base {};
int main() {
auto base_uptr = std::unique_ptr<Base>{make_unique<Derived>()};
return 0;
}
который конструктор вызывается для unique_ptr
? Я посмотрел на cppreference.com и конструкторы, которые я нашел (предварительно C++ 17) были (для завершения)
constexpr unique_ptr();
constexpr unique_ptr(nullptr_t);
explicit unique_ptr(pointer p);
unique_ptr(pointer p, /* see below */ d1);
unique_ptr(pointer p, /* see below */ d2);
unique_ptr(unique_ptr&& u);
template< class U, class E >
unique_ptr(unique_ptr<U, E>&& u);
Ни один из них не кажется, принимает указатель другого типа. Что мне не хватает? Какой конструктор вызван?
Спасибо!