Что касается переключателя, в стандарте указано следующее. "Когда выполняется оператор switch, его состояние оценивается и сравнивается с каждой константой случая".
Означает ли это, что выражение условия оценивается один раз и один раз, и оно гарантируется стандартом для каждого компилятора?
Например, когда функция используется в заголовке оператора switch с побочным эффектом.
int f() { ... }
switch (f())
{
case ...;
case ...;
}