However, reference_wrapper is perfectly copied, so its value can always be changed, so why by default it has no null reference?
What is the point of std::reference_wrapperhaving a null value? If you need to have a null value, just use the pointer: P
std::reference_wrappercreated as a wrapper for the link, namely. It should behave like a link, otherwise it will not be a wrapper, but something else. For him, there are precedents that may break if you allow him a default value. If you need to have a null value, use either another, such as a pointer, or live with link restrictions.
In addition, you yourself indicate the reason:
[...] although using the default built reference_wrapper raises an exception at runtime.
? std::reference_wrapper, , -, . , , , .
[...]
, . . , , ..
, std::reference_wrapper - , , . , std::observer_ptr, .