Книга пытается устранить потенциальную путаницу людей, которые изучали другие языки до C ++. Во многих языках вы можете возвращать несколько значений, используя похожий синтаксис. В C ++ он будет компилироваться без предупреждения (если вы не укажете -Wall
или -Wunused-value
), но он не будет работать так, как вы ожидаете, если вы привыкли к этим другим языкам. Он просто вернет последнее значение.
Однако, кажется, что автор вызвал больше путаницы, чем предотвратил, поскольку в C ++ нет читаемой ситуации, чтобы использовать такой синтаксис в операторе возврата, кроме случайного использования его как другого языка. Он предупреждает об использовании, которое большинству людей не придет в голову попробовать. Однако, если вы это сделаете, отладка будет очень запутанной, поскольку оператор множественного присваивания int x, y = foo()
также прекрасно компилируется.
Итог: всегда используйте -Wall
и исправьте то, о чем вас предупреждает. Синтаксис C ++ позволяет писать много вещей, которые не имеют смысла.