title: += operator overloading and cascading?
body: <p>For educative purposes, I wish to overload and use the += operator in cascade.</p>
  
  <pre><code>class a {
      public:
          a();
          a&amp; operator+= (float f);
      private:
          float aa;
  }
  
  a() {
      aa = 0;
  }
  
  a&amp; operator+= (float f) {
      aa += f;
      return *this;
  }
  
  a b;
  b += 1.0; // Works.
  b += 1.0 += 1.0; // Error : Expression must be a modifiable lvalue.
  </code></pre>
  
  <p>I don't understand why the above doesn't work (aside of the possible syntax mistakes -- didn't try to compile this sample code). Returning *this in the overloaded operator+= method, I would expect the second += 1.0 to be called on the b object, no?</p>
  
  <p>Thanks.</p>