I am new to programming, so have never experienced a language update. With the release of C++11, I want to make use of all the new features such as lambda expressions and threads. I know I can do this with external libraries but using native language features would be more convenient.
I am using gcc 4.2.1 on Mac OS X Snowleopard in Xcode 3.2.6
What all do I need to do and update to start using C++11 features?
You can update to Xcode 4.1 (or whatever the most recent version you can get for Snow Leopard is) and get a new compiler with a few more C++11 features. There are some posts here on Stack Overflow about getting better support for C++11 in Xcode 4.1 on Snow Leopard.
But even the latest compiler available through Xcode does not support some C++11 features like lambdas. To get the best C++11 support you’ll want to install a newer compiler, gcc 4.6 or 4.7, or Clang.
I frequently build the latest version of clang from source. It’s not difficult to do if you’re familiar with building other open source software. I use the git repos for clang and llvm,
http://llvm.org/git/llvm.gitandhttp://llvm.org/git/clang.git. You can also find instructions on their website for getting started: http://clang.llvm.org/get_started.html. Once you have the source for clang and llvm it’s just./configure && make && sudo make install. (you might want to run the tests before installing, since this is directly out of the repository. Aftermakedomake checkin the llvm directory, and once that passes cd down to tools/clang and runmake test. If everything is okay thensudo make install)I don’t remember if Snow Leopard included libc++ or not, so you may need to get that as well. http://libcxx.llvm.org/
Once everything is built and installed you can do:
and you should have just about the best C++11 support around.
Recent patches in clang have really improved support for the last features you’re likely to notice as a new C++ programmer. There are still a few bits and pieces left, but as of 3.1, and as far as I’m aware, clang has every C++11 feature that either gcc 4.7 or VC++11 has and more besides. libc++ also has the fewest gaps in terms of C++11 standard library features IME (though I think VC++’s standard library will also be pretty complete once they catch up on language features, e.g. char32_t and char16_t as native types so that the standard’s mandated specializations for those types can be used).