У меня просто было странное поведение из версии g++ для Windows, которую я получил с Strawberry Perl. Это позволило мне опустить выражение о возврате.
У меня есть функция-член, которая возвращает структуру, состоящую из двух указателей, называемых boundTag
:
struct boundTag Box::getBound(int side) {
struct boundTag retBoundTag;
retBoundTag.box = this;
switch (side)
{
// set retBoundTag.bound based on value of "side"
}
}
Эта функция дала мне плохой результат, и я обнаружил, что у нее нет оператора возврата. Я хотел вернуть retBoundTag
, но забыл написать инструкцию return. Когда я добавил return retBoundTag;
, все было в порядке.
Но я проверил эту функцию и получил правильный вывод boundTag
от нее. Даже сейчас, когда я удаляю оператор return, g++ компилирует его без предупреждения. WTF? Предполагает ли он возвращать retBoundTag
?