9
// Compiled by Visual Studio 2012
struct A
{
bool operator ==(const A& other) const
{
for (decltype(this->n) i = 0; i < n; ++i) // OK
{}
return true;
}
protected:
size_t n;
};
struct B : public A
{
bool operator ==(const B& other) const
{
for (decltype(this->n) i = 0; i < n; ++i) // error C2105: '++' needs l-value
{}
return true;
}
};
क्या यह वीसी ++ 2012 का एक बग है?क्या घोषित एक आर-वैल्यू घोषित कर सकता है?
प्रकार आर-वैल्यू या एल-वैलेस नहीं हैं; प्रकार * प्रकार * हैं। एल-वैल्यू/आर-वैल्यू वर्गीकरण * एक्सप्रेशन * के लिए है। –
संदर्भ के लिए, यह सी ++ 0x ध्वज के साथ जीसीसी 4.6.3 के तहत संकलित करता है। मुझे लगता है कि यह सही है, आपके लूप दोनों समान हैं। –
बी :: ऑपरेटर == में टाइप I के लिए टाइप को कॉन्स int के रूप में घटाया गया है, जो वीसी बग की तरह दिखता है। – Andrey