Question: I have a class like so:

```
class Node {
    // data
    Node* next;
    void operator++(int);
};

```

And when I define the post-increment operator like so:

```
void Node::operator++(int) {
    this = this->next;
}

```

I get the error `Expression is not assignable` on `this = this->next;`.

What's up with this? How do I get `this` to point to `next`?

Answer: 
According to the C++ standard the `this` pointer is a *prvalue* expression (see [[class.this]](http://eel.is/c++draft/class.this)), however the assignment operator requires an *lvalue* as its left operand (see [[expr.ass]](http://eel.is/c++draft/expr.ass)).
The hidden parameter 'this' is passed with the 'const' qualifier. Hence it cannot be changed.
[Hidden this](http://www.learncpp.com/cpp-tutorial/87-the-hidden-this-pointer/)