Будет ли работать автоматический возврат типа возврата для основного?

Смогу ли я сделать следующее для основной функции в C ++ 1y (C ++ 14):

auto main()
{
// ...
}

Так будет ли возвращаемый тип автоматически int хотя нам не нужно использовать явное return 0;?

27

Решение

Нет, это не будет разрешено В пункте 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

как тип …

23

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector