Per quanto ho capito, è opinione diffusa all'interno della comunità C ++ che alcune funzionalità del C ++ (incluse alcune funzionalità ereditate direttamente da C), pur essendo ancora utilizzabili in sé stesse, non si adattino bene al C ++ più recente < em> migliori pratiche . Ad esempio, ho letto un commento su questo sito affermando che new / delete dovrebbe essere evitato del tutto a favore di puntatori intelligenti.
In considerazione di ciò, mi chiedo spesso perché la retrocompatibilità con C e le precedenti funzionalità C ++ sia ancora importante: per quanto ne so non c'è compatibilità al 100%, ma la maggior parte di C e C ++ sono contenuti in C ++ 11 come sottoinsieme .
Quindi, forse sarebbe possibile / avere senso abbandonare le precedenti caratteristiche del C ++ (ad esempio il nuovo / eliminato citato) da un futuro standard C ++ in modo che sia impossibile usarle nel nuovo codice.
Il codice esistente potrebbe ancora essere mantenuto usando il compilatore appropriato. L'interoperabilità tra legacy e nuovo codice sarebbe supportata da una compilazione separata. Si potrebbe continuare a utilizzare lo standard precedente o adottare quello più recente, non sarebbe possibile solo mescolare i due: uno sviluppatore / team dovrebbe scegliere chiaramente quale stile di programmazione si desidera utilizzare. La soluzione più flessibile sarebbe quella di avere opzioni del compilatore per attivare e disattivare determinate funzionalità (ad esempio, nessuna nuova / eliminazione consentita).
Sarebbe una strategia valida per incoraggiare l'adozione di moderne pratiche C ++? Ci sono problemi tecnici (ad es. Compilazione di modelli esistenti, Compatibilità ABI) che rende questo cambiamento troppo difficile o addirittura impossibile?