Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
C++ International Standard final draft is ready (herbsutter.com)
58 points by wyclif on March 26, 2011 | hide | past | favorite | 18 comments


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)).

So, taken from: http://www2.research.att.com/~bs/C++0xFAQ.html#lambda

You could write something like:

  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; });
  		// ...
  	}


Welcome to ... what? 1970? 1960? How many decades ago did other languages have anonymous functions?


Lisp, 1958. Though technically they were invented in 1936 by Alonzo Church (in his Lambda Calculus).


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.


Exactly! Now it's time for the assembly language to get anonymous lambdas too :)


If only C++ was as useful as the odd bit of assembly programming.


I hope they at least beat Java to it.


While most C++ users continued with the same tiny subset of the language they have always used…


Even if one uses a tiny subset of C++, the new standard provides many improvements suited for nearly any subset. For instance:

- Expected notation for angle brackets (vector<vector<string>> versus vector<vector<string> >).

- Type inference using the 'auto' keyword.

- Initializer lists.

- Range-based loops.

- Strongly-typed enumerations.

- Delegation in constructors (constructor-constructor calls).

- Incorporation of TR1, which brings stuff like shared_ptr and containers based on hashing (unordered_map/unordered_set).


Type inference using the 'auto' keyword.

This is the one I'm looking forward to. Maybe I won't have to typedef every stl container I use just to make my code readable.


But compared to real type inference? In languages which have been around since the early 80s??

Just being able to infer the type in the right side of an expression is rubbish.


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.


Really? You've actually (and verifiably) tried this or not?


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.


Except that even the C++ hello world uses most features of the language:

* C-like functions (main)

* headers (iostream)

* namespaces (std)

* operator overloading (<<)

* object-orientation (cout is an instance of a class that is derived from ios and ios_base)

* templates (endl is a template function)


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.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: