Странное поведение уникального указателя _в Visual Studio 2010

Я пытался написать этот класс

#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?
}

И соответствует без исключений. Запустив программу, я обнаружил, что после вызова конструктора ContainerUniqueuсодержит нулевой указатель.

Это предполагаемое поведение? И какой уникальный метод _ptr я на самом деле вызываю?

12
задан ildjarn 17 July 2012 в 22:09
поделиться