The requirements of the call to the function object Deleter are specific on this as listed in the requirements of the std::unique_ptr<T>::reset() member.
From [unique.ptr.single.modifiers]/3, circa N4660 §23.11.1.2.5/3;
unique_ptrmodifiers
void reset(pointer p = pointer()) noexcept;Requires: The expression
get_deleter()(get())shall be well formed, shall have well-defined behavior, and shall not throw exceptions.
In general the type would need to be destructible. And as per the cppreference on the C++ concept Destructible, the standard lists this under the table in [utility.arg.requirements]/2, §20.5.3.1 (emphasis mine);
Destructiblerequirements
u.~T()All resources owned byuare reclaimed, no exception is propagated.
Also note the general library requirements for replacement functions; [res.on.functions]/2.