On a whim, I tried to define the main function as a template function using clang 2.9:
template <typename T = void>
int main(int argc, char **argv)
{
}
and received the following error.
error: 'main' cannot be a template
int main(int argc, char **argv)
^
Does anyone know what section of the standard forbids this, and what the relevant text is?