2012-02-29 11 views
6

Forse una domanda strana, ma c'è qualche software disponibile che, dato un mucchio di codice C++ 11, ricava tutti i tipi di variabili auto-digitate e riscrive il codice con quei tipi derivati? E anche per gli elenchi di inizializzatori?Riscrivi automaticamente la parola chiave auto C++ 11 in tipi derivati ​​

Il ragionamento è che vorremmo fornire una versione compatibile con le versioni precedenti del nostro codice (non C++ 11), principalmente per la portabilità con osx. Gli elenchi di auto-battitura e di inizializzazione sono le funzionalità che usiamo di più poiché rendono il codice molto più leggibile, ma rimuoverli a mano è un no-go. Poiché questo è in effetti ciò che il compilatore fa con le variabili auto-digitate, non sembra troppo inverosimile?

+1

libclang per il salvataggio? – sehe

+0

Puoi elaborare @sehe? Clang fa qualcosa in quel modo? FYI, clang 3.0 non supporta abbastanza funzionalità in C++ 11 per compilare il nostro codice. –

+1

@BroesDeCat: Stava suggerendo di usare la libreria del compilatore di Clang per compilare il codice, e poi di scriverlo di nuovo, con tutti gli "auto" convertiti nei loro tipi dedotti. –

risposta

2

Se è possibile utilizzare Boost, è possibile cercare boost::typeof. Non farà esattamente ciò che fa auto, ma, nella maggior parte dei casi, può essere automaticamente sostituito tramite una ricerca regex-with-captures.

1

Suona come una funzionalità per un plug-in di refactoring per Eclipse CDT (in realtà ho proposto tali ai miei studenti qualche tempo fa). Potrebbe essere il prossimo mandato Posso trovare una squadra per creare tale. Tuttavia, le informazioni di Eclipse CDT potrebbero non essere sufficienti per determinare sempre le cose giuste.

Per alcuni elenchi di inizializzatori, ad es. Quelli che riempiono un vettore, boost :: assign potrebbe essere una sostituzione. La nostra infrastruttura mock-object Mockator usa questi per C++ 03 anziché gli elenchi di inizializzatori in C++ 11.

Non dovresti aver paura delle librerie Boost, almeno non di quelle fornite solo come intestazione. Quelli che hanno parti di libagioni separate possono essere un po 'fastidiosi da configurare correttamente (la situazione di costruzione è migliorata di recente).