Почему вытекает с конца функции без возвращаемого значения, не образующегося плохого?C++

Программы на C++. Форум разработчиков
Anonymous
Почему вытекает с конца функции без возвращаемого значения, не образующегося плохого?

Сообщение Anonymous »

Я столкнулся с этим текстом в стандарте: < /p>

, вытекающий с конца конструктора, деструктора или неканальной функции с типом возврата cv void, эквивалентна возврату без операнда. в противном случае, вытекающая из окончания функции, которая не является ни главной (6.9.3.1), ни коратиной (9.5.4) приводит к неопределенному поведению. Пример этого в действии. < /P>

Это не является реализацией, большинство основных компиляторов способны диагностировать возвращение по функции во всех путях управления без возврата значения, когда -wreturn -value < /code> (которая включена в -аллом < /code>), когда Clang, кажется, имеет ошибку в этом моменте для этого). Например, следующее получает предупреждение: < /p>

Код: Выделить всё

int foo(int a) {
if (a == 0) {
return 0;
} else if (a == 1) {
return 1;
}
}
Это также не связано с тем фактом, что main () может возвращаться без значения, потому что стандартные особые случаи, которые в любом случае.

Подробнее здесь: https://stackoverflow.com/questions/796 ... ill-formed

Вернуться в «C++»