НЕ самая важная константа .. но что это?

Это выводит F ~ , но я ожидал ~ F

#include <iostream>

struct Foo {
    int _x;
    operator const int & () const {return _x;}
    ~ Foo () {std :: cout << "~";}
};

void foo (const int &)
{
    std :: cout << "F";
}

int main ()
{
    foo (Foo ());
}

Я построил это как контрпример, чтобы показать, что наиболее важная-const является скорее исключением чем правило. Обычно он записывается как

, когда ссылка на константу привязывается к временному объекту, тогда время жизни этого временного объекта увеличивается до времени жизни ссылки

Я пытался проиллюстрировать это, хотя Foo () является временным, ссылка на _x , возвращенная оператором преобразования, не является, и что приведенный выше код небезопасен.

Но вывод, похоже, доказывает, что пример безопасно, время жизни временной Foo () увеличивается за счет существования константной ссылки на один из ее членов.

Правильно ли это? Где в стандарте это указано?

7
задан Charles 15 November 2011 в 17:53
поделиться