int i;
int &r1 = i; // (b)
const int &r2 = 1; // (c)

単純化するとこういうことだよね。(b)も(c)も可能。
C++の参照ってのは別名と考えるといいんでない?
(b)の場合、r1はコンパイルの便宜上iにつけられた別名。
(c)のr2は、無名インスタンスにつけられた名前。
r1やr2という「参照型のインスタンス」が存在するわけではない。