You can safely bind a reference to a temporary object. The temporary object to which you bind the reference persists for the lifetime of the reference.
class C { int j;public: C(int i) : j(i) {}};void main() { const C& cr = C(5);//bind a reference to a temp; temp's destruction deferred to the end of the program C c2 = cr; //use the bound reference safely}//temporary destroyed here along with its bound reference