一時オブジェクトの const 参照による束縛の話なんですが、
ちと理解できたか自信ないので質問です。
こんなクラスと関数があったとして…

 struct A {};
 struct X {
  const A* p;
  X(const A& a) : p(&a) {}
 };
 X xget(const A& a) { return X(a); }
 void xtest(const X& x) {
  // ここで *(x.p) を使うとします
 }

以下のようになるという理解であってますか?

これはok
 xtest(xget(A()));
これもok
 const A& a = A(); xtest(xget(a));
これもok
 const A& a = A(); const X& x = xget(a); xtest(x);
これはダメ!
 const X& x = xget(A()); xtest(x);