がなぜ正しい次のコードである:ここではアサイナブル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))
{}
}
、私はa_1 + a_2
ので、if文のエラーを期待r値です。クラスA
ため、(a_1+a_2) = a_1
はちょうど最後のA::operator=(const A&)
への呼び出しとして解析されますので
error: expression is not assignable
if(((a_1+a_2) = a_1))
~~~~~~~~~^
1 error generated.
*このような最小限の(しかしまだ完全な)例題にあなたの問題を減らすための誇大な名言。 –