| I'm nothing like an official C++ spokesperson, but I'll take a shot at these questions. If the improvements are incremental, then this wasn't worth doing Well maybe C++ is not your cup of tea, but I find the improvements worthwhile. If the improvements are such a new, cleaner, simpler language, why the hell call it C++? Again, see D. Yeah, I think it's a better C++ not an entirely new language. Lastly, most of the fixes are syntactic sugar which do nothing to help fix some very real issues with the deployment of the language. Systems languages are syntactic sugar for the underlying runtime model. I consider C++ to be a systems language (the ISO spec explicitly defines a minimal profile suitable for embedded systems for example). But C is probably a slightly more "systems" of a language (in no small part because it's the language which defines most system's APIs). How do I bind these things to other languages cleanly? In C this is trivial--why isn't this fixed in C++11? If you think this is trivial in C I suspect it's because you have so much familiarity with it and/or these other languages are implemented in C and define their external APIs directly in C. C has an unfair advantage in this regard, but it's just not that hard to integrate C++ and C. Sometimes C++ has advantages too, some people swear by Boost.Python for example. Looks much simpler than C to me. How do I load libraries of classes dynamically at runtime? From C wrappers? That's one way. The main reason dynamic loading works in C is because the types are all so primitive (and it doesn't have "classes"). You can use those primitive types for your APIs and in C too. Another way is to define the classes interfaces in terms of something binary stable over the scope you wish to separately compile these libraries. This requires some understanding of the guarantees of the platform and complier/linker. MS-COM for example gets a lot of mileage out of some relatively minimal abstract class layout conventions. When interfacing with old libraries (which actually do exist), how often am I going to have to write some kind of NULL-nullptr glue code? I've been writing some C++11 with C++4.6.0 and a bunch of old libraries and haven't run into that. I don't use pointers in my code very much, so I don't think I've even had to use nullptr yet. So I would think "not very often", at least if your coding style is similar to mine. Why do we not have variable length arrays (they're in C99)? I don't know why the decision was made in the language committee, but std::vector with the new initializer syntax works well for me for that purpose. Perhaps the C99 construct could be a little more efficient, but I don't see a reason that an alert compiler couldn't also allocate the storage on the stack. |