tags:

views:

213

answers:

5

OK, I am considering of getting into c++ development in coming months (there is no set date). I am vaguely familiar with the language (primarily C), as well as some basics of OO, MI, templates, exceptions, patterns, used STL. And now I am at the point in time where I would like to master the language in depth. And the natural question is whether I should
start with current C++03 or C++0x standard.

Please suggest what the best way to go from a user to guru, given that new standard is almost here, and likely to remain for many years to come.

Thanks

+7  A: 

Learn the older standard C++03. C++0X is still a couple years away (at least) from even being ratified as a standard. Once it's standardized, it'll take time before any conforming implementations appear that support all of its features, and it'll take an even longer time before C++0X implementations become significantly popular and oft-used.

Adam Rosenfield
+2  A: 

In my opinion, learn C++03 is more practical. If you don't mind learning new features but can use partial for serveral years, C++0x is better. Good news is g++ new version and vc++2010 already implemented parts of new c++0x features.

kcwu
+1  A: 

Learning the new C++0x features is a great way to learn more about C++03 in depth because you see how C++03 works, the problems with it, and what c++0x proposes to do to solve those problems.

I had this experience recently learning about the new rvalue references and move semantics. In C++03 there's a lot of unnecessary temporary creation and copying in expressions, learning about why c++03 has this problem and how C++0x solves this problem was pretty enlightening and informed my current C++ development.

Doug T.
+10  A: 

My recommendation is to start out in the middle. Start with C++03, but check the features and C++0x libs that some compilers are already offering each so often. As of now, C++03 is THE standard (not only formally, but most code you will find will be strictly C++03).

Now, if you intend on learning go for the best: start quickly with STL basics and jump into Boost libraries right away. Learn templates the whole way, read on metaprogramming. Modern C++03 usage will get you right on track for C++0x.

David Rodríguez - dribeas
+1  A: 

It's going to be a few years before C++0x compilers are common. So at the moment, you don't have much choice. Learn C++03, and then you can learn the new stuff separately, when the time comes. The fundamental differences aren't that great. 0x is mostly a matter of new features being bolted on, and existing features being generalized and streamlined. Knowledge of C++03 will still be applicable.

jalf