こんばんは。
参照型変数の寿命に関連してお伺いします。
紙面の都合上かなり省いていますが、下記コードでのretの使い方は正しいでしょうか?
(分かりづらいようでしたら、どこかに張ります)

まず、foo()は変更できない関数です。
処理としては、クラスXXXのメンバ変数のconst参照を返しています。
この参照をそのまま取得したいのですが、cがNULLの時はfoo()を呼べないので、
ifブロック外のポインタretに代入するようにしました。
動くことは動くのですが、ifブロックを抜ける時にRetが消えるような
気がしてなりません。よろしくお願いします。

XXX *c = yyy.GetPointer();
const vector<int> *ret = NULL;
if (c != NULL) {
 const vector<int>& Ret = c->foo();
 ret = &Ret;
}
 :
if (c != NULL) {
std::for_each(ret->begin(), ret->end(), print);
}