Здравствуйте, BulatZiganshin, Вы писали:
BZ>и что возвращает функция int fread(...) ?
BZ>кол-во прочитанных байт? код ошибки? фазу Луны?
Ну, давайте не заниматься демагогией. Я хотя бы знаю, что это целое. По этому, по названию и сигнатуре функции я в 99% случаев могу предсказать этот результат. Когда вместо int там будет auto, кому-то станет легче? Нет. Потому что даже зная, что она должна вернуть (если функция названа вменяемо, это понятно по одному названию), я должен буду догадаться:
auto bytes_read = fread(...)./*что тут писать, просить помощи у IDE?*/
Это может быть bytes_read, result, bytes, read, length и все другое, что придет в голову разработчику библиотеки.
Признаю, в некоторых случаях это улучшит читаемость кода, но зато затруднит написание практически во всех.
Еще одна радость. Если там можно спросить, например, код ошибки, то использование auto становится уже не удобной мелочью, а назойливой необходимостью:
int bytes_read = fread(...).bytes_read; // Отлично
Но теперь мне нужно узнать о коде ошибки... Значит прошлый код не годится! Будем писать так:
auto result = fread(...);
if (!result.error)
{
int bytes_read = result.bytes_read;
}
Можно еще прописать вариант с errno или возвратом кода ошибки по указателю в последнем параметре, но все эти варианты одинаково уродливы.