And MS has yet to produce a fast-building IDE & compiler!
Unfortunately,
more evidence was brought to light. It would seem that Ogre compiles significantly slower even on Linux when compiled with C++11. Apparently the extra declarations in headers are to blame. A beer for whoever keeps saying "pay for what you use in C++".
It's sad because there are C++11 features I do would like to use: Override and final keywords are great (*), std::to_string is shorter than our StringConverter::toString, defaulted functions, forward declaring enums, static asserts, nullptr, and rvalue references.
(*) Though it's hard to start incrementally adopting it, because if you use it once, then clang/gcc will warn for every virtual function that is not using it. But still override & final probably get me more excited than most of the other features combined.
Some of this functionality has been floating on my mind though: Override & final can be implemented via Macros, i.e. OGRE_OVERRIDE (I think I prefer ogre_override, despite going against our guidelines, the all caps on every virtual function is too distracting) defines to nothing on C++03, but defines to override on C++11. Something similar can be done about nullptr, though I think defining "nullptr" in a header may be too bold. ogre_nullptr or OGRE_NULLPTR sounds a little silly, as it seems to be too verbose for very small gains.
Static asserts are also addressable in this way.
Other features like defaulted functions and rvalue references simply don't seem to have its workarounds into C++03.
But I haven't found the time to get deep into it.