Lol, the language has undergone a lot of revisions, and the tools aren't perfect; I'd say half the C++ community uses <iostream.h> instead of <iostream>, most compilers don't even fully support the ANSI-C++98 standard, and for people like me who have been into C++ since 1991, it seems like the folks like to shake the whole language up periodically.
On the plus side, the changes over the past 12 years have been overwhelmingly positive, and Microsoft has finally put out a compiler (.NET 2003) that is not only good, it's the most compliant out there, which probably dropped more than a few jaws from people used to VC's odd relationship with the standard.
C++ is indeed a wild ride; just learn as you go along. And if your compiler gripes over something that should be legal, then make the necessary changes and gripe at it, or upgrade.
The tools aren't perfect; if you have something like VC6 or .NET 2002, read up on the major problems so you can code around your tools' stupidity:
ummm, if omitting return 0 doesn't work for every compiler, wouldn't it be best to include it for portability? It's only, what, 9 keystrokes anyway :)
Wow, I must be a slow reader because two new posts appeared when I clicked Reply.... I agree with you Zakk, C++ is definitely an odd language, to say the least :)