L'avvertimento C4800 della Microsoft compilatore C++ come descritto qui:C4800 ha un valore reale?
https://msdn.microsoft.com/en-us/library/b6801kcy.aspx
rende questo codice:
// C4800.cpp
// compile with: /W3
int main() {
int i = 0;
// try..
// bool i = 0;
bool j = i; // C4800
j++;
}
gettare l'avviso C4800: " 'tipo': forzatura valore bool 'vero "o" falso "(avviso di prestazione)"
Microsoft sembra ritenere che sia ragionevolmente importante, e lo ha come avvertimento di Livello3, tuttavia Clang sembra che non lo sia, così come non si lamenta tutto intorno a -Weverything, il suo livello massimo di avvertimento.
C'è qualche bug del mondo reale che qualcuno possa inventare che C4800 indichi che valga la pena di averlo abilitato?
Leggi il testo : "avviso di prestazione". Ti avverte solo che questo potrebbe essere un po 'più lento/più costoso di quanto potresti aspettarti. –
anche il degrado delle prestazioni è un errore :) puoi pensare a un caso reale in cui si verifica un degrado delle prestazioni non superflui che questo avviso potrebbe segnalare? –
Se non lo hai già trovato, [questa domanda] (http://stackoverflow.com/questions/206564/what-is-the-performance-implication-of-converting-to-bool-in-c) può essere di qualche interesse per te La prima risposta sembra indicare che "l'avviso di prestazione" non è più ciò che l'avvertimento intende far notare. – jaggedSpire