Как и ожидалось, компилятор (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.
Это просто неопределенное поведение или существует определенное правило, как значение результата создается / вычисляется во время выполнения. Что происходит с типами данных не POD в качестве возвращаемого значения?