Я пытался написать этот класс
#include <memory>
class ContainerUnique
{
public:
ContainerUnique(void);
~ContainerUnique(void);
private:
std::unique_ptr<UniqueElement> u;
};
Где UniqueElement — это класс POD, определенный в другом месте. Теперь я определяю тело конструктора следующим образом:
ContainerUnique::ContainerUnique(void)
{
auto tmp = new UniqueElement(1);
this->u(tmp); // u is a unique_ptr<UniqueElement>. Should this call compile?
}
И соответствует без исключений. Запустив программу, я обнаружил, что после вызова конструктора ContainerUnique
u
содержит нулевой указатель.
Это предполагаемое поведение? И какой уникальный метод _ptr я на самом деле вызываю?