Initializing a reference to a function
with a value that is a function
that is not call-compatible ([expr.call])
with the type of the reference
has undefined behavior.
Initializing a reference to an object
with a value that is not
type-accessible ([basic.lval]) through
the type of the reference
has undefined behavior.