Очень часто у вас есть функция, которая для заданных аргументов не может генерировать действительный результат или не может выполнять некоторые задачи.Помимо исключений, которые не так часто используются в мире C / C ++, в основном есть две школы сообщения о недопустимых результатах.
Первый подход смешивает допустимые возвращаемые значения со значением, которое не принадлежит кодомену функцииочень часто -1) и указывает на ошибку
int foo(int arg) {
if (everything fine)
return some_value;
return -1; //on failure
}
Подход scond заключается в возврате состояния функции и передаче результата в пределах ссылки
bool foo(int arg, int & result) {
if (everything fine) {
result = some_value;
return true;
}
return false; //on failure
}
Какой способ вы предпочитаете и почему,Приносит ли дополнительный параметр во втором методе ощутимые потери производительности?