2016-09-10 8 views
5

में मुझे/घटाना सरणी का उपयोग मुझे कॉन्स्टेक्स फ़ंक्शन के अंदर जीसीसी 6 और 7 (जीसीसी 5 में नहीं) में एक बग मिला, जो अलग-अलग परिणामों की ओर जाता है यदि फ़ंक्शन संकलित समय पर गलत मूल्यांकन करता है (गलत परिणाम) या रनटाइम (सही परिणाम)।जीसीसी बग - constexpr

#include <iostream> 

constexpr int bar(int *b) { 
    int i = 0; 
    b[i++] = 1; // GCC produce here an failure. 

    return 0; 
} 

constexpr int foo() 
{ 
    int tmp[] = {0}; 
    bar(tmp); 

    return tmp[0]; 
} 

constexpr int cexprI = foo(); 

int main() 
{ 
    std::cout << cexprI << " " << foo() << "\n"; 

    return 0; 
} 

Live Example

समस्या वेतन वृद्धि (भी घटती के लिए होता है) सरणी पहुँच के अंदर ऑपरेशन है।

निरंतर अभिव्यक्ति का संकलन समय परिणाम 0 (गलत) है और रनटाइम परिणाम 1 (सही) है।

किसी को भी इस बग की पुष्टि करें और को यह रिपोर्ट किया जा सका: https://gcc.gnu.org/bugzilla/

मैं एक खाता वहाँ User account creation has been restricted. नहीं बना सकते। मैंने प्रशासक से संपर्क किया, लेकिन मेरे लिए बग आलोचनात्मक है। तो यह आपको सूचित करना चाहता था। धन्यवाद!

उत्तर

संबंधित मुद्दे