Pourquoi le code suivant est-il correct :
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) )
{}
}
Ici, je m'attendais à une erreur dans l'instruction if puisque a_1 + a_2
est une valeur r. Remplacer la ligne A a_1, a_2;
par int a_1, a_2;
conduit à l'erreur attendue :
error: expression is not assignable
if( ((a_1+a_2) = a_1) )
~~~~~~~~~ ^
1 error generated.