I found these nice C++0x additions for vim:
support of C++0x in
Now I have suitable syntax highlighting for
constexpr and other new keywords. C++0x lambda
functions still confuse syntax highlighting
though, I suspect that'll take a bit more effort to fix. Or
maybe it's OK to have lambdas highlighted in bright red, I
guess that could be considered a feature!
I'm working on new pieces of the C++0x standard library for libstdc++ and the more I use it, the more I find that C++0x is a joy to program in. Yes, that's right, C++. Not a pain in the butt. A joy. Personally I've always liked using C++, but in what some might consider a perverse way - with C++0x I think there's a dash of elegance to go with the power that C++ has always had. (But maybe I'm just braindamaged by too many years of using templates.)
RAII combines very nicely with move semantics, so not only can you manage resources 100% safely and simply, you can now transfer ownership of those resources efficiently and 100% safely. Resource Transfer Is Initialization too, thanks to move constructors.
Tuples are like
std::pair on steroids, but
whereas the only helper for pairs was
std::make_pair, C++0x gives you a handful of
These make it very convenient to pass ad-hoc data structures
in and out of functions. Especially when you combine them
with type inference, done with the re-purposed
auto keyword and template argument deduction -
which itself is made more powerful and at the same time
simpler, thanks to variadic templates.
Using these new features I've just implemented
the generic locking algorithms that lock an arbitrary number
Lockable arguments (typically two or more
std::mutex objects) and it took me roughly the
same number of lines of code as a similar try-and-backoff
algorithm in Butenhof's book, which only handles a fixed
number of mutexes (three) and doesn't have robust
error-handling (abort), and of course only works with one
I've seen the future and it tastes like awesome.