Attualmente, sto usando il seguente modello di funzione di sopprimere avvertimenti variabili non utilizzati:Sopprime l'avviso di variabili inutilizzate in C++ => bug del compilatore o bug del codice?
template<typename T>
void
unused(T const &) {
/* Do nothing. */
}
Tuttavia, quando il porting di cygwin da Linux, ora sto ottenendo gli errori del compilatore g ++ su 3.4.4 (su Linux Sono 3.4 0,6, così forse questo è correggere un bug):?
Write.cpp: In member function `void* Write::initReadWrite()':
Write.cpp:516: error: invalid initialization of reference of type 'const volatile bool&' from expression of type 'volatile bool'
../../src/common/Assert.h:27: error: in passing argument 1 of `void unused(const T&) [with T = volatile bool]'
make[1]: *** [ARCH.cygwin/release/Write.o] Error 1
L'argomento non utilizzato è una variabile membro dichiarata come:
volatile bool readWriteActivated;
Is ° è un bug del compilatore o un bug nel mio codice?
Qui è il banco di prova minimo:
template<typename T>
void unused(T const &) { }
int main() {
volatile bool x = false;
unused(!x); // type of "!x" is bool
}
Non riesco a riprodurre il problema. Puoi pubblicare il codice che riproduce il problema. –
WilliamKF - Perché hai accettato una risposta che dichiari chiaramente di non risolvere il tuo problema? – Tom