Здравствуйте, ·, Вы писали:
·>Я могу понять, например, обращение к неинициализированным данным... но в данном случае — отсутствие return — неясно что тут такого требующего платить скоростью или усилиями?
да всё тоже самое. Отсутствие return по сути — это обращение к неинициализированной памяти:
int foo() {}
void main() {
foo();
foo();
const auto res = foo(); //UB
}
в данном случае результат вызова foo никак не обрабатывается. Зачем нам тратить такт процессора и записывать принудительно какое-то значение в eax? Вот компилятор и не тратит. Как только попытались получить доступ к памяти, получили UB. Романтика. Это же одна из основных идей языка. Не платить за то, что не используем.