@litb: Хм, я тоже не могу это найти. Я предполагаю, что это не определено, тогда ...
троил этот эксперимент сегодня, ответив на какой-то вопрос
struct A {
bool &b;
A(bool &b):b(b) { }
~A() { std::cout << b; }
bool yield() { return true; }
};
bool b = A(b).yield();
int main() { }
b
имеет значениеfalse
(в результате нулевой инициализации) перед установкойtrue
динамической инициализацией. Если временное уничтожено до инициализацииb
готово, мы распечатаемfalse
, в противном случаеtrue
.
Спецификация говорит, что временное уничтожается в конце полного выражения. Это не похоже на заказ с инициализациейb
, Так мне интересно
false
а такжеtrue
в разных пробегах?Ленточные принтыfalse
для вышеупомянутого, в то время как GCC печатаетtrue
, Это смущает меня. Я пропустил какой-то текст спецификации, определяющий порядок?