Yes, but nonetheless it must then compile the code because the member is
a const & and those can exist even when the initialising type is wrong
as long as a conversion exists. The code is essentially no different to:
int main(){
float const f= 2.0;
int const & i_ref = f;
// the implementation creates a temporary instance of int with the value
2 which it binds to i_ref. The temporary's lifetime will be that of
i_ref. Note that this only applies for const references. and not for
unqualified references
Francis