Спасибо за проверку. Тем не менее, это все еще кажется мне довольно противоречивым - иметь ссылки, которые увеличивают время жизни в списке инициализатора POD, но не в инициализаторе ctor, кажется очень странным. Но хорошо, это C ++. +1 от меня.

вая следующий код:

class foo
{
};

class bar: public foo
{
public: 
    ~bar() { printf("~bar()\n"); }
};

class zab: public foo
{
public: 
    ~zab() { printf("~zab()\n"); }
};

struct foo_holder
{
    const foo &f;
};

int main()
{
    foo_holder holder[]= { {bar()}, {zab()} };
    printf("done!\n");
    return 0;
}

выход:

~bar()
~zab()
done!

В C ++ 0x есть пункт, который предписывает, что это может создавать висячие ссылки при использовании в качестве нового инициализатора, но он ничего не говорит (по крайней мере, ничего, что я могу найти) о совокупной инициализации константных ссылок с временными файлами.

Это неопределенное поведение тогда?

Ответы на вопрос(2)

Ваш ответ на вопрос