C++17 added [[nodiscard]].
C++20 added the use of [[nodiscard]] on empty methods, e.g. vector::empty() -- maybe, to avoid user confusion with the method clear (i.e. calling empty() accidentally to clear the vector).
Why didn't C++20 use this opportunity to add [[nodiscard]] to unique_ptr::release?
Is there a valid reasonable scenario in which one would call unique_ptr::release without taking the returned value?
In the same manner of avoiding user confusion (if this was the reason for adding [[nodiscard]] to the empty methods) - the name release was always very confusing, sounds like, well... something is going to be released here.
Adding [[nodiscard]] could fix this name issue, in a way.