Вы скомпилировали с включенными предупреждениями?Я получаю warning: control reaches end of non-void function
с g ++.
Вы, конечно, не хотите, чтобы компилятор останавливался на первой ошибке в вашем коде.Вы хотите, чтобы он поймал как можно больше за один раз.Чтобы сделать это, компилятор должен пропатчить ваш ошибочный код, чтобы он мог нажимать дальше.В этом случае патч очевиден: возвращайте поток, предоставленный в качестве аргумента.
Никогда не доверяйте тем "исправлениям", которые бесплатно предоставляет компилятор.Они совсем не бесплатны.Вместо этого исправьте ваш код.
И всегда компилируйте с включенными предупреждениями.