Я пытаюсь написать функцию constexpr
формы:
constexpr int foo(bool cond) {
int a, b, c;
if (cond) {
a = 1;
b = 2;
c = 3;
}
else {
a = -1;
b = -2;
c = -3;
}
return a + b + c;
}
Однако компилятор жалуется, что я использую неинициализированные переменные, несмотря на то, что возможная инициализация локальных переменных гарантирована.
Я мог бы перезаписать функцию для использования тройных операторов, т.е. int a = cond ? 1 : -1;
и т.д., но я бы предпочел не делать этого. Есть ли способ убедить компилятор, что локальные переменные будут инициализированы?