2010-08-20 13 views
12

मैं जब Clang.क्या मुझे क्लैंग में एक बग मिला है?

[email protected] ~ $ clang++ --version 
clang version 2.8 (trunk 107611) 
Target: i386-pc-linux-gnu 
Thread model: posix 
[email protected] ~ $ cat bug.cpp 
class Prasoon{ 

     private: 
     static const int dummy = 0; 

    }; 

int const Prasoon::dummy = 0; 

int main(){} 
[email protected] ~ $ clang++ bug.cpp 
[email protected] ~ $ 

साथ संकलित लेकिन जब मैं g++ के साथ एक ही कोड संकलित मैं एक त्रुटि मिली Clang

class Prasoon{ 

    static const int dummy = 0; 

}; 
int const Prasoon::dummy = 0; 

int main(){} 

ऊपर कोड के साथ नीचे दिए गए कोड को संकलित करने के किसी भी त्रुटि नहीं दिया की कोशिश की जैसा सोचा था।

[email protected] ~ $ g++ bug.cpp 
bug.cpp:8: error: duplicate initialization of ‘Prasoon::dummy’ 

तो क्या मुझे Clang में एक बग मिली है?

+0

आप कौन सा क्लैंग संस्करण उपयोग कर रहे हैं? मैक पर 1.5 जी ++ 4.2.1 के समान आउटपुट देता है। – Eiko

+1

वह अपने नमूना आउटपुट में है: क्लैंग संस्करण 2.8 (ट्रंक 107611) – Douglas

+2

ठीक है, यह संपादन से पहले नहीं था ;-) – Eiko

उत्तर

9

हां, आपको एक बग मिला है।

नियम मानक में व्यक्त किया है:

9.4.2-3: एक स्थिर डेटा सदस्य स्थिरांक शाब्दिक प्रकार का है, तो वर्ग परिभाषा में अपनी घोषणा एक brace- निर्दिष्ट कर सकते हैं या- बराबर-प्रारंभकर्ता जिसमें प्रत्येक प्रारंभकर्ता-खंड जो असाइनमेंट-अभिव्यक्ति एक निरंतर अभिव्यक्ति है। शाब्दिक प्रकार का स्थिर डेटा सदस्य क्लास परिभाषा को कॉन्स्टेक्स विनिर्देशक के साथ घोषित किया जा सकता है; यदि हां, तो इसकी घोषणा ब्रेस-या-बराबर-प्रारंभकर्ता निर्दिष्ट करेगी जिसमें प्रत्येक प्रारंभकर्ता-खंड जो असाइनमेंट-अभिव्यक्ति निरंतर अभिव्यक्ति है। [नोट: इन दोनों मामलों में, सदस्य निरंतर अभिव्यक्तियों में दिखाई दे सकता है। - अंत टिप्पणी] सदस्य अभी भी एक नाम स्थान दायरे में अगर यह कार्यक्रम में प्रयोग किया जाता है और नाम स्थान गुंजाइश परिभाषा एक प्रारंभकर्ता को शामिल नहीं करेगा परिभाषित किया जाएगा।

4

हाँ यह वास्तव में एक बग है। मैंने आपके bug report पर क्लैंग करने के लिए ठोकर खाई - इसे सबमिट करने के लिए समय निकालने के लिए धन्यवाद :) जबकि इस बग को प्रारंभ में 0/के रूप में 4/23/10 पर लॉग किया गया था, तो आपका सबमिशन इसे मेरे ध्यान में लाया और मैंने एक साधारण patch सबमिट किया है उनकी समीक्षा के लिए डेवलपर समूह।