Стивен Прата в своей книге С++ Primer Plus [стр. 31] говорит:
Многие существующие программы вместо этого используют классический заголовок функции C:
main() // original C style
В классическом C, опуская тип возврата это то же самое, что сказать, что функция - это тип int. Однако С++ имеет отмените это использование.
Однако в проекте С++ 11 3.6.1- > 2 говорится
Реализация не должна предопределять основную функцию. Эта функция не должны быть перегружены. Он должен иметь тип возвращаемого типа int, но в противном случае его тип определяется реализацией.
Результат теста
$ g++ -Werror=pedantic MainCheck.cpp -o MainCheck
MainCheck.cpp:3:6: error: ISO C++ forbids declaration of ‘main’ with no type [-Werror=pedantic]
main()
$ # also means g++ don't conform to the standard
подтверждает, что г-н Прата сказал, что это правда, когда дело доходит до стандарта С++.
Есть ли предложение в проекте С++ 11, которое препятствует использованию:
main() // that is without return type.
Есть
Он должен иметь тип возврата типа int
сам такой пункт?