Can anybody explain to me why there is a difference between these two statements?

```
class A{};

const A& a = A();         // correct 

A& b = A();               // wrong

```

It says 
invalid initialization of non-const reference of type `A&` from a temporary of type `A`

Why does `const` matter here?