Смогу ли я сделать следующее для основной функции в C ++ 1y (C ++ 14):
auto main()
{
// ...
}
Так будет ли возвращаемый тип автоматически int
хотя нам не нужно использовать явное return 0;
?
Нет, это не будет разрешено В пункте 7.1.6.4/10 проекта стандарта C ++ 14 N3690 указано:
Если функция с объявленным типом возврата, который использует тип заполнителя, не имеет
return
заявления, возврат
тип выводится как бы изreturn
оператор без операнда в закрывающей скобке функции
тело. […]
Это означает, что опуская return
заявление в main()
сделал бы его тип void
,
Введенное в пункте 3.6.1 / 5 специальное правило о слиянии с конца main()
определяет:
[…] Если контроль достигает конца
изmain
не встречаяreturn
утверждение, эффект заключается в выполненииreturn 0;
Формулировка говорит, что «эффект» во время выполнение программы такой же, как если бы return 0
присутствовал, не то чтобы return
оператор будет добавлен в программу (что повлияет на вывод типа в соответствии с приведенным абзацем).
РЕДАКТИРОВАТЬ:
Eсть Отчет о дефектах за это (любезно предоставлено Йоханнесом Шаубом):
Предлагаемое решение (ноябрь 2013 г.):
Измените пункт 3.6.1 [basic.start.main] следующим образом:
Реализация не должна предопределять основную функцию. Эта функция не должна быть перегружена. Должно иметь объявленный возвращаемый тип типа int, но в остальном его тип определяется реализацией.
Все реализацииРеализация позволят как
- функция
()
возвратеint
а также- функция (
int
указатель на указатель наchar
) возвращаясьint
как тип …
Других решений пока нет …