बजना इस कोड को स्वीकार करता है में अलग है, लेकिन जीसीसी यह खारिज कर दिया:त्रुटि: पुन: घोषणा 'constexpr'
class Foo {
public:
static constexpr double kVal = 0.25f;
};
const double Foo::kVal;
~$ clang++ foo.cc -std=c++11 -c
[ok]
~$ g++ foo.cc -std=c++0x -c
foo.cc:6:19: error: redeclaration ‘Foo::kVal’ differs in ‘constexpr’
foo.cc:3:34: error: from previous declaration ‘Foo::kVal’
foo.cc:6:19: error: declaration of ‘constexpr const double Foo::kVal’ outside of class is not definition [-fpermissive]
कौन सा व्याख्या है (बजना 3.0 और जी ++ 4.6.3 का उपयोग करते हुए) सही बात?
फ़ंक्शन घोषणा के लिए, क्लैंग और जीसीसी दोनों एक त्रुटि देते हैं। –
@ जोशली: ऐसा इसलिए है क्योंकि यह किसी फ़ंक्शन के लिए अनिवार्य है, लेकिन नियम चर के लिए लागू नहीं होता है। हालांकि, मैं व्यक्तिगत रूप से उनके बीच स्थिरता पसंद करूंगा। –