Как и ожидалось, компилятор (VisualStudio 2008) выдаст предупреждение
предупреждение C4715: "doSomethingWith": не все пути управления возвращают значение
при компиляции следующего кода:
int doSomethingWith(int value)
{
int returnValue = 3;
bool condition = false;
if(condition)
// returnValue += value; // DOH
return returnValue;
}
int main(int argc, char* argv[])
{
int foo = 10;
int result = doSomethingWith(foo);
return 0;
}
Но программа работает нормально. Возвращаемое значение функции doSomethingWith() равно 0.
Is - это просто поведение undefined, или существует определенное правило, как создается или вычисляется значение результата во время выполнения. Что происходит с не-POD-типами данных как возвращаемое значение?