Является ли этот инициализатор конструктора причиной свисающей ссылки?

Я изучаю С++ Primer 4th edition Стэнли Б. Липпман. В разделе 12.4.1, когда автор говорит о инициализаторах конструктора, он приводит этот пример:

class ConstRef {
  public:
    ConstRef(int ii);
  private:
    int i;
    const int ci;
    int &ri;
};
// OK: explicitly initialize reference and const members.
ConstRef::ConstRef(int ii): i(ii), ci(i), ri(ii) { }

Я подозреваю, что это может привести к зависанию ссылки ri, указывающей на ii, что является временным. Я прав?

Ответы

Ответ 1

Я тоже так думаю. Попробуйте это

ConstRef::ConstRef(int ii): i(ii), ci(i), ri(i) { }