https://gcc.gnu.org/bugzilla/show_bug.cgi?id=54351
--- Comment #13 from Jonathan Wakely <redi at gcc dot gnu.org> --- It isn't specified whether it is assigned to or not in the destructor, so I think it's conforming. D::pointer is required to meet the NullablePointer requirements, which includes CopyAssignable, so in the absence of any restrictions to the contrary the implementation can rely on assignment (and typically both release() and reset() will assign to the pointer, and reset() is a valid implementation of the destructor).