代码是否正确?
unique_ptr<A> p( new A()); p = nullptr;
我应该使用带有* unique_ptr *的nullptr吗?还是会失败?
我尝试g,但是,其他编译器呢?
解决方法
它会奏效
根据C11标准的关于unique_ptr<>的20.7.1.2.3 / 8-9段类模板:
unique_ptr& operator=(nullptr_t) noexcept
;Effects:
reset()
.Postcondition:
get() == nullptr
这意味着类模板的定义unique_ptr<>包括operator =的重载,它接受nullptr_t类型的值(如nullptr)作为其右手侧;该段还指定将nullptr分配给unique_ptr等同于重置unique_ptr.
因此,在此赋值之后,您的A对象将被销毁.