Quote Originally Posted by mhogomchungu View Post
That is just not true.

If you have a malformed C++ source file,the C++ compiler will refuse to compile it,it is just that simple.

The fact that any C++ compiler can parse a Qt based C++ source file and generate object code for the source file should be proof enough that the Qt based source file is "C++ standard compliant".If it wasnt standard,the C++ parser would complain about it,its just that simple.

Qt's extensions are just macros that hides the ugly details of how it stretches C++,but those macros live within the rules of the language.

What moc does is generating addition "standard C++" code that glue together the expanded macros.Remove moc and all Qt based code will compile just fine,things will just fail to link because the expected glue will be missing.If you write Qt code,you can write the expected glue yourself,skip moc and things will build and link just fine.Why couldnt they come up with another macro that provided the glue?Who knows,maybe they reached the limit of their collective imaginations.
Because C++ is not quite there. Almost but not quite, even C++14 will be missing a few things if feature parety is to be maintained. See http://woboq.com/blog/reflection-in-cpp-and-qt-moc.html