Sto pensando di sostituire tutte le istanze di idioma bool sicuro con explicit operator bool
nel codice che utilizza già le caratteristiche C++ 11 (quindi il fatto che i compilatori meno recenti non hanno riconosciuto la conversione esplicita gli operatori non contano), quindi mi piacerebbe sapere se può causare alcuni problemi sottili.Incompatibilità tra safe bool idiom e operatore esplicito bool
Così, che cosa sono tutti le possibili incompatibilità (anche quelli più minuti) che possono essere causati da passaggio da vecchio e noioso sicura bool linguaggio di nuovo e lucido explicit operator bool
?
EDIT: So che il passaggio è comunque una buona idea, dato che quest'ultimo è una funzionalità linguistica, ben compresa dal compilatore, quindi funzionerà non di peggio di quello che è in realtà solo un hack. Voglio semplicemente sapere le possibili differenze.
Certo che hai ragione. Ma c'è una ragione per cui l'ho etichettato con "l'avvocato linguistico". Vorrei dei fatti puri che derivino dallo standard stesso, non un consiglio sulle buone pratiche. Devo chiarirlo, ma grazie comunque. – Fanael
@Fanael: The Standards, C++ 03 e C++ 11 entrambi, non parliamo di idioma safe-bool, quindi non è possibile citare da esso per supportare ciò che ho detto. Tutto quello che sto insinuando è che C++ 11 ha introdotto 'bool operatore esplicito' per ragione (s), e uno dei motivi, penso, è' esplicito bool operatore 'è ** più sicuro ** rispetto al cosiddetto idioma di sicuro valore. – Nawaz
Ma lo standard parla delle cose usate per implementare l'idioma di sicurezza. Quindi, mentre lo standard non dice nulla di quello stesso idioma, le sue esatte garanzie sono praticamente implicite nel documento. – Fanael