Quali strategie ci sono per le funzioni di deprecazione quando il tipo di ritorno deve cambiare? Ad esempio, ho:Come deprecare la funzione quando cambia il tipo di ritorno C++
BadObject foo(int); // Old function: BadObject is being removed.
Object foo(int); // New function.
Object
e BadObject
sono molto diversi internamente e scambiando i loro tipi restituiti spezzerò codice per gli attuali utilizzatori di mia libreria. Sto cercando di evitarlo.
Posso contrassegnare BadObject foo(int)
deprecated e dare agli utenti il tempo di modificare il codice interessato.
Tuttavia, I can't overload foo
based on return-type. foo
ha un nome molto buono, e non ha bisogno di prendere parametri extra. Come posso aggiungere la nuova funzione alla mia libreria mantenendo la versione precedente, almeno per un po '?
Qual è la strategia per deprecare la vecchia funzione senza interrompere troppo il codice dipendente, fornendo agli utenti il tempo di migrare alla nuova versione? Idealmente manterrei il nome della funzione e l'elenco dei parametri attuali, perché è chiamato abbastanza bene ora. Sembra che questo sia un problema ragionevolmente comune: qual è un modo decente per risolverlo?
Bene, se gli utenti usavano l'auto ovunque, invece di digitare manualmente il tipo restituito, tutto funzionava automaticamente :). – ScarletAmaranth
Questo non ti aiuta ora, ma gli spazi dei nomi inline C++ 11 sono perfetti per questo. Dichiarate 'pippo' in' namespace inline v0', quando è richiesta una modifica dichiarate 'foo'' in' namespace inline v1' (e rimuovete 'inline' da' v0'). – mythagel