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;
}
};
Đây có phải là lỗi của VC++ 2012 không?Có thể decltype khai báo giá trị r?
Các loại không phải là giá trị r hoặc l-vales; các loại * loại *. Phân loại giá trị l-giá trị/r là cho * biểu thức *. –
Để tham khảo, nó biên dịch theo gcc 4.6.3 với cờ C++ 0x. Tôi nghĩ rằng điều này là đúng, xem xét cả hai vòng của bạn là giống hệt nhau. –
Loại cho i trong B :: operator == được suy ra như const int, trông giống như một lỗi VC. – Andrey