Poniższy C++ jest nieważne, ponieważ zmienne referencyjne wymagają inicjatorów:Inicjowanie zmiennych referencyjnych z operatorem warunkowym
int& a; // illegal
if (isfive) {
a = 5;
} else {
a = 4;
}
jednak MSVC wydaje się, że to jest w porządku:
int& a = isfive ? 5 : 4;
Oznacza to dla mnie, że MSVC traktuje operator warunkowy jak pojedyncze wyrażenie i nie rozwija go w instrukcję if-else.
Czy jest zawsze prawidłowe C++, aby zainicjować odniesienie za pomocą operatora warunkowego?
Ciekawe, co się stanie, jeśli spróbujesz porównać to na poziomie zespołu ... – beta0x64
Jak porównać na poziomie assemicznym, który kompiluje, i kod, który nie działa? –
Co to robi? Proszę po złożeniu! :-) – Florian