Yes it's clear ... main require the 'int' specifier.
Your problems are much bigger than "main" requiring "int".
All functions have return types. Including main, which is just a function.
All functions have arguments. It is bad style to leave the argument empty; better to make it function(void).
By the way, the arguments to main() are standardized. I typically use int main(int argc, char* argv[]), but there are other options; some people prefer "char** argv", which is also correct.
You should also go and understand the special rule about returning 0 in main. Relying on that rule is considered bad style though; I would always put "return 0;" as the last line of main.
If you want to program C++, you better understand namespaces, really well. That's not a line one "forgets" ... it either means you don't understand the language, or you didn't design your code.
And finally, none of the questions you are asking here are clang (or clang++) specific. You would get the same problems and solutions with gcc, the AIX or Solaris compilers, and with Windows C++.
The level of your questions show that you are trying to program in C++, without having learned enough about it. To be blunt: You urgently need to spend two evenings reading a C++ textbook, before you touch the keyboard again. Someone suggested the Stroustrup book above; that is a very good book, and way too fat. However, it is not easy to understand. Personally, I prefer Stan Lippman's "C++ primer", which is better at teaching things, while Stroustrup is better at confusing people and being a language lawyer. Bjarne Stroustrup has recently written a much thinner book called "A tour of C++", which is a pretty good introduction, and thankfully very brief.