I've seen in a site that int main(int argc, char* argv<::>) can also be used as a signature of main. Surprisingly, The following program:
int main(int argc, char* argv<::>)
{
  return 0;
}
compiles withput any warnings in GCC , as well as clang. It also compiles in C++.
So, how is it that int main(int argc, char* argv<::>) is a valid signature of main?