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;
}
};
Bu bir VC++ 2012 hatası mı?Bir r değeri bildirebilir miyim?
Türler r değerleri veya l değerleri değil; türleri * türleri *. L-değeri/r-değeri sınıflandırması * ifadeleridir *. –
Referans olarak, C++ 0x bayrağı ile gcc 4.6.3 altında derler. Bence bu, hem döngülerin aynı olduğu düşünülürse haklıdır. –
B :: operator == öğesindeki i türü const int olarak çıkarılır, bir VC hatası gibi görünür. – Andrey