Spesso ho letto alcuni software che ritagliano alcune funzionalità C++ per essere compatibile con i compilatori C++ poveri/vecchi/esotici.Quali caratteristiche di C++ (98/03) non sono supportate da compilatori scadenti?
This one è solo l'ultimo che ho avuto in: Box2D non utilizza gli spazi dei nomi perché hanno bisogno di sostegno:
poveri compilatori C++ in cui il sostegno dello spazio dei nomi può essere imprevedibile
Un esempio più grande Posso pensare che Qt, che si basa su MOC, stia limitando molto l'uso dei template e stia evitando i template (beh, questo è almeno vero per Qt3 e versioni precedenti, Qt4 lo fa per lo più per mantenere le loro convenzioni).
Mi chiedo quali compilatori sono così poveri?
Ci sono lots of C++ compilers là fuori (non ne ho mai sentito parlare la maggior parte di loro), ma mi auguro che tutti supportino le più comuni (/ semplici?) Funzionalità C++ come gli spazi dei nomi (a meno che non siano morti); non è questo il caso?
Quali sono le funzioni più non supportate?
Posso facilmente aspettarmi la mancanza di modelli esterni, forse la specializzazione parziale dei template e caratteristiche simili. Al massimo anche RTTI o eccezioni, ma non avrei mai sospettato di spazi dei nomi.
Hmm. Apparentemente, Box2D "ha iniziato la sua vita" all'inizio del 2006. Sembra che il lato in ritardo eviti i namespace. Ma Qt3 risale a un tempo in cui non esisteva un compilatore Windows C++ decente, e da allora il suo slancio lo ha portato avanti. – aschepler
Si potrebbe notare che il MOC (Meta Object Compiler) di QT non ha davvero nulla a che fare con l'avere o meno di una caratteristica C++ o l'altra. L'ho sempre considerato come una funzione aggiuntiva (utile) che semplifica la programmazione con Qt rispetto al tentativo di implementare il proprio set di funzionalità tramite puro C++. –
@Martin: per quanto ne so con C++ 03 è relativamente semplice implementare quasi tutto ciò che viene utilizzato per MOC, in particolare il meccanismo signal/slot (vedi boost.signal) che credo sia la caratteristica più importante per cui MOC ha stato creato. – peoro