2
为什么下面的代码正确:分配的R值
struct A
{
A operator+(A const& elem)
{
return *this;
}
bool operator==(A const& elem)
{
return true;
}
operator bool()
{
return true;
}
};
int main()
{
A a_1, a_2;
if(((a_1+a_2) = a_1))
{}
}
在这里,我预计在if语句错误,因为a_1 + a_2
是r值。通过int a_1, a_2;
更换线A a_1, a_2;
导致预期的错误:
error: expression is not assignable
if(((a_1+a_2) = a_1))
~~~~~~~~~^
1 error generated.
*巨大的*将您的问题减少到最小(但仍然是完整)的例子。 –