I'm not completely sure what C++11 stuff would be most useful to Felix. A lot of the stuff that avoids book-keeping for human programmers is no problem in generated code.
Some of the new library containers may be useful. In the core language, initialiser syntax like X = { .. } would be a big help. Felix has to either generate constructors to do this, or, it has to generate a separate variable somewhere and manually initialise it with assignments. For the compiler keeping track of this is hard because the need to generate the initialiser list is usually discovered too late to back track and insert statements to create the value .. i.e. you're in the middle of generating an expression and you run into something that can only be made into one by a magic function you have to define *earlier* in the code. For exactly the same reason the lambda feature would be useful. It allows a bunch of statements to be inserted into an expression. <rant> Curious the committee didn't bother to allow named nested functions! Oh .. was that because they stupidly used up the "auto" keyword which would have declared them? :-) Of course the whole worry about keywords is irrelevant these days because we have GLR parsers but I guess they didn't exist then. C++11 actually has a couple of "context sensitive keywords" now (identifiers treated as keywords only in a particular context). </rant> A couple of the "easier reading" feature will also be useful not for the Felix compiler as such, but to make the generated code easier to read. Felix doesn't need "auto" but it could make generated code look nicer. The there's rvalue references and move semantics which will certainly be important even for Felix. These should allow significant performance improvements not possible otherwise (even with compiler generated code). I may have missed something. Any suggestions for other useful stuff in C++11? BTW: C++11 doesn't have arithmax. That annoys me :-) We need a trait: template<class T, class U> class result::type<T,U> which gives the type of x + y for all possible x,y in the set of standard scalar types. Felix has to have this. It currently (mis)calculates the result at configuration time. The result is platform dependent in corner cases eg long long + unsigned long could be long long or unsigned long depending on whether sizeof(long) == sizeof(long long). If they're equal the unsigned long is used otherwise long long is used (i.e. the biggest one is used or the unsigned one if they're the same). -- john skaller skal...@users.sourceforge.net http://felix-lang.org ------------------------------------------------------------------------------ Monitor your physical, virtual and cloud infrastructure from a single web console. Get in-depth insight into apps, servers, databases, vmware, SAP, cloud infrastructure, etc. Download 30-day Free Trial. Pricing starts from $795 for 25 servers or applications! http://p.sf.net/sfu/zoho_dev2dev_nov _______________________________________________ Felix-language mailing list Felix-language@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/felix-language