Так как С+++ допускает перегрузку функции, можем ли мы перегрузить main()
?
Например,
int main(const std::string &)
{
return 0;
}
int main(int argc, char *argv[])
{
return main("calling overloaded main");
}
gcc-4.3.4
не компилирует это и дает эти ошибки: (см. ideone)
prog.cpp: 4: ошибка: первый аргумент 'int main (const std::string &) должен быть' int
prog.cpp: 4: error: 'int main (const std::string &) принимает только нулевые или два аргумента
prog.cpp: В функции 'int main (int, char **):
prog.cpp: 8: ошибка: объявление функции C "int main (int, char **) конфликтует с
prog.cpp: 4: error: предыдущее объявление 'int main (const std::string &) здесь
prog.cpp: В функции 'int main (int, char **):
prog.cpp: 10: ошибка: неверное преобразование из 'const char * to' int
prog.cpp: 8: ошибка: слишком мало аргументов для функции 'int main (int, char **)
prog.cpp: 10: ошибка: на данный момент в файле
Итак, мне интересно, запрещает ли С++-стандарт перегрузку main
? Если да, то какое утверждение?