Just anonymous function would make a huge difference. Presently, you have to use boost or create new classes (Yes, you need to write a class for any anonymous function! (See Effective Stl, item 46 for more details of why it is recommended)).
void f(vector<Record>& v)
{
vector<int> indices(v.size());
int count = 0;
fill(indices.begin(),indices.end(),[&count](){ return ++count; });
// sort indices in the order determined by the name field of the records:
std::sort(indices.begin(), indices.end(), [&](int a, int b) { return v[a].name<v[b].name; });
// ...
}
There are function pointers in C and they are used to pass logic into C/C++ functions. They are not anonymous, and are more awkward to use than the new syntax, but they covered many use cases.
Of course, but I can't use any of those languages to implement commercial audio units so I'm happy to have something in the one language in which I can.
Maybe you've never written audio unit or vst plugins? This is a domain in which C++ virtual functions are considered too slow, not to mention things like garbage collection. There's a reason everybody writes this stuff in C++ (and often assembly).
The new unorder containers are very nice. They are containers based-on hash table data structures and are very fast for certain problems. It's nice to have them in the standard.
I don't think it's correct to characterize the C++ hello world as using object-orientation or even templates. There's no template syntax in it, for example.
It does use that one predefined object std::cout and its overloaded operator. But other than that plus namespaces, it's not using features that aren't available in C.
I disagree that it uses most features of the language, at least not in any direct or visible way. There are a lot of features it doesn't use.
The important lesson here is that the only way to fix C++ is by making it even more complicated. This may sound like a joke, but it is in fact the truth.
So, taken from: http://www2.research.att.com/~bs/C++0xFAQ.html#lambda
You could write something like: