c++ - यह अमान्य दिखने वाला कोड g ++ 6.0 पर सफलतापूर्वक क्यों संकलित करता है?




1 Answers

यह उन सभी संस्करणों में g ++ के साथ एक बग / फीचर / समस्या प्रतीत होता है, जिसका मैं परीक्षण कर सकता हूं। चल रहा है

int main()
{
    int(*){} Is it C++14 or any other language?
}

G ++ के सभी संस्करणों के लिए godbolt.org पर कोई संकलन झंडे के साथ निम्नलिखित असेंबली godbolt.org नहीं देते हैं।

main:
    pushq   %rbp
    movq    %rsp, %rbp
    movl    $0, %eax
    leave
    ret

मुझे प्राप्त एकमात्र निदान godbolt.org पर है और वह है

!!warning: extended initializer lists only available with -std=c++0x or -std=gnu++0x

क्लेंग, आईसीसी और एमएसवीएस सभी इसे संकलित करने में विफल रहते हैं।

संपादित करें:

टिप्पणियों से zwol इस पर जीसीसी के साथ एक बग दायर किया। बग रिपोर्ट here पाई जा सकती here

इस प्रश्न का उत्तर यहां दिया गया है:

इस अजीब कार्यक्रम पर विचार करें:

int main()
{
    int(*){} Is it C++14 or any other language?
}

( here और here एक लाइव डेमो देखें।)

भले ही टिप्पणी // गायब है, कोड किसी भी त्रुटि और चेतावनियों के बिना ठीक संकलित करता है , भले ही मैं g ++ 6.0 में -pedantic-errors विकल्पों का उपयोग करता -pedantic-errors । यह मेरे लिए एक कंपाइलर बग की तरह लगता है। क्या यह वास्तव में संकलक में एक बग है?




Related

c++ g++

Tags

c++   g++