A menudo leo acerca de algunos programas que eliminan algunas características de C++ para cumplir con compiladores de C++ pobres/antiguos/exóticos.¿Qué características de C++ (98/03) no son tan bien compatibles con compiladores deficientes?
This one es sólo el último que se metió en: Box2D no está utilizando espacios de nombres, ya que necesitan para apoyar:
pobres compiladores de C++ donde el apoyo del espacio de nombres puede ser irregular
Un ejemplo más grande Puedo pensar que Qt, que confía en MOC, está limitando mucho el uso de plantillas y está evitando plantillas (bueno, esto es al menos cierto para Qt3 y versiones anteriores, Qt4 lo hace principalmente para cumplir sus convenciones).
Me pregunto qué compiladores son tan pobres?
Hay lots of C++ compilers por ahí (nunca he oído hablar de la mayoría de ellos), pero espero que todos ellos sean compatibles con las características más comunes (/ simples?) De C++ como espacios de nombres (a menos que estén muertos); ¿No es este el caso?
¿Cuáles son las características más incompatibles?
Puedo fácilmente esperar la falta de plantillas externas, tal vez especialización parcial de plantilla y características similares. A lo sumo, incluso RTTI o excepciones, pero nunca hubiera sospechado de espacios de nombres.
Hmm. Box2D aparentemente "comenzó su vida" a principios de 2006. Eso suena en el lado tardío para evitar los espacios de nombres. Pero Qt3 data de una época en la que no existía un compilador decente de Windows C++, y su impulso lo ha llevado desde entonces. – aschepler
Uno podría notar que el MOC de QT (Meta Object Compiler) realmente no tiene nada que ver con tener o no tener una característica de C++ o la otra. Siempre lo he visto como una función complementaria (útil) que hace que programar con Qt sea más simple que tratar de implementar su conjunto de características a través de C++ puro. –
@Martin: por lo que sé con C++ 03 es relativamente sencillo implementar casi todo lo que se usa MOC, especialmente el mecanismo de señal/ranura (ver boost.signal) que creo que es la característica más importante para la cual MOC tiene sido creado. – peoro