Почему вы можете это сделать?
int a;
const double &m = a;
Но когда вы это делаете
int a;
double &m = a;
вы получаете сообщение об ошибке?
error: non-const lvalue reference to type 'double' cannot bind to a value of unrelated type 'int'
Редактировать:
Чтобы быть более конкретным, я пытаюсь понять причину, по которой ссылки не-const не могут связывать временные объекты.