[Development] What kind of airplane we want to build?
Thiago Macieira
thiago.macieira at intel.com
Sat Jan 23 01:47:38 CET 2016
On Saturday 23 January 2016 01:23:30 Kevin Kofler wrote:
> I feel it's actually TOO rapidly changing. C++11 even threw out C
> compatibility, not only by not adopting all C99 improvements (e.g. VLAs),
> but also by subtly interpreting even as simple valid C90 code as "auto x =
> 1.5;" in an incompatible way. (OK, that code is not valid C++98, but at
> least a C++98 compiler would tell you what is wrong with it, C++11 just
> silently gives it a different meaning.)
I disagree with you on all points here. C++ is *not* moving too fast. In some
areas, it's not moving even fast enough: where's the reflection support?
Meanwhile, discussions linger in the standards proposal mailing list about how
many templates we need for parsing a string to integer.
Specifically on VLAs, the proposal was added to C++14, but dropped due to
disagreement. C++ would have implemented a subset of C99's requirement, but
not the controversial parts like taking a sizeof and getting the runtime size
and passing them as parameters. The less we talk about
void f(int n, char array[static n]);
the better.
On auto, it's not a big loss. So what if it's incompatible between C and C++?
NO ONE writes "auto" anymore in C, since the only place where you can use it
are places where it's redundant. As for the case you showed, even C99
deprecated it.
I miss designated initialisers and that is a shame. When that comes around,
the discussion always goes on to talk about named parameters, which meets
stiff resistance in the committee.
> I consider the fix of the "have to write '> >' to close double templates"
> issue as the most useful improvement in the entire C++11 standard.
Not variadic templates? Not constexpr? Not decltype? Not rvalue references?
By the way, if you Google for "C++ most vexing", you'll see a problem that is
still not solved and probably won't be.
> Please do not make major changes to Qt that break all existing code, or even
> replace it with something entirely different. It causes major pain. There
> is useful software out there still stuck on Qt 3 years after Qt 4.0.0, and
> the changes you suggest would be even much worse than the Qt 3 to 4
> transition.
We will have to eventually break some things. Compatibility with old code has
kept QIODevice stuck in time, unable to move forward and implement important
things like zero-copy buffering.
--
Thiago Macieira - thiago.macieira (AT) intel.com
Software Architect - Intel Open Source Technology Center
More information about the Development
mailing list