This quote from guestgulkan seems to sum it up pretty well.
You can't take the address of a literal (so the address of a literal cannot be assigned to a pointer).
references are not pointers (in the c++ sense) and behave differently with regards to literals.
You can bind a reference to a literal because
a temporary variable is created from the literal and the and it is this temporary variable that is used by the the reference. Temporary variables are constant.