वर्तमान में, मैं अप्रयुक्त चर चेतावनी को दबाने के लिए निम्नलिखित समारोह टेम्पलेट का उपयोग कर रहा हूँ:सी ++ => कंपाइलर बग या कोड बग में अप्रयुक्त चर चेतावनी को दबाएं?
template<typename T>
void
unused(T const &) {
/* Do nothing. */
}
हालांकि, जब लिनक्स से cygwin को पोर्टिंग, अब मैं जी ++ 3.4.4 पर संकलक त्रुटियों (हो रही है linux पर मैं 3.4 हूं .6, तो शायद यह एक बग को ठीक किया जाता है):
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
अप्रयुक्त के लिए तर्क एक सदस्य चर घोषित किया जाता है के रूप में:
volatile bool readWriteActivated;
वें है मेरे कोड में एक कंपाइलर बग या एक बग है?
template<typename T>
void unused(T const &) { }
int main() {
volatile bool x = false;
unused(!x); // type of "!x" is bool
}
मैं समस्या को पुन: उत्पन्न नहीं कर सकता। क्या आप कोड पोस्ट कर सकते हैं जो समस्या को पुन: उत्पन्न करता है। –
विलियमकेएफ - आपने एक ऐसा जवाब क्यों स्वीकार कर लिया है जिसे आप स्पष्ट रूप से बताते हैं कि आपकी समस्या का समाधान नहीं होता है? – Tom