If you are just learning, I would recommend g ++, but I would recommend you get the latest. This might be a little more complicated than usual on win32 (you probably have to manually update mingw or something else). That way, you can do a lot of the benefit of installing Linux on a second partition, or on some old PC or something like that.
The main reason I recommend g ++ over VS is the implementation of new bits of the language. MSVC ++ has some of C ++ 0x, but a huge part of it is not. In addition, they got a lot of things wrong and / or in some kind of semi-threading state (and sometimes what they say is "partially implemented" is available only in the C ++ / CLI language, the functions of which they include in their list supported C ++ 0x). g ++, on the other hand, is largely an implementation of the new standard, which people implementing the standard actually implement. It was designed to test new features, etc., and much, much further in the implementation of C ++ 0x than any others I can think of.
Why learn C ++ 0x? Because this is what language will look like now. Why learn the old when you just have to relearn, like everyone else, like me. Since C ++ 0x extends the language and changes the language in different ways, it almost feels completely new. In my opinion, you would recommend yourself just by knowing what the future will be, and not the past (and in the case of VS, as well as the fatigue of the two).
I use VS because I really need it. If I were a beginner today, I would study in g ++ to get all new goodies. I totally wish that I could use it myself.
source share