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;
}
};
這是VC++ 2012的bug嗎?decltype可以聲明一個r值嗎?
類型不是r值或l值;類型是*類型*。 l值/ r值分類用於*表達式*。 –
作爲參考,它使用C++ 0x標誌在gcc 4.6.3下編譯。我認爲這是對的,考慮到你的循環是相同的。 –
我在B :: operator ==中的類型被推導爲const int,看起來像一個VC bug。 – Andrey