[unique.ptr.single.observers]/3: "pointer operator->() const noexcept; Requires: get() != nullptr."
[util.smartptr.shared.obs]/2: "T& operator*() const noexcept; Requires: get() != 0."
[util.smartptr.shared.obs]/5: "T* operator->() const noexcept; Requires: get() != 0."
Narrow-contract functions should not be noexcept.