On 3 May 2015 at 6:54, Michael wrote:
In my opinion areas such as concurrency, functional, lambdas, etc, have seriously changed the game significantly. For instance, without getting too lengthy, if I need to inject some solution specific code into an event handler, lambdas alone are an interesting option to consider. Sure you could use a standalone function and bind to it, but the very nature of lambdas is compelling when it may not be worth cluttering a namesace with additional symbols. Of course, remaining sufficiently open minded that you don't suffer from hammer/nail syndrome leaves ample room for personal and professional growth, as well as being aware what generations if code have what tools and solutions available to it.
Interestingly, though perhaps unsurprisingly, in the libraries I reviewed their external user facing APIs are generally identical to what you'd supply in a C++ 03 library. Only internal implementation uses C++ 11/14. I say unsurprisingly because external APIs are always going to be the most conservative design by anyone with experience, however C++ 11 makes possible a "composure through merged namespace" design idiom and C++ 14 makes possible a "composure through lambda" design idiom for external user facing library APIs. Both have major strengths for some use cases over 03 API designs, but right now libraries are only using those designs internally, not in a user facing API.
Definitely, interesting times to be a C++ guy these days. Good luck, and I look forward to staying tuned!
C++ is also beginning to see the next evolution of competition. As much as C++ 11 borrowed enough from D to render it impotent, I suspect C++ is going to have to borrow much more from the new generation of systems programming languages (Rust, Swift, Go) in order to stay relevant. Bjarne's presentation to WG21 this week notwithstanding of course :) Niall -- ned Productions Limited Consulting http://www.nedproductions.biz/ http://ie.linkedin.com/in/nialldouglas/