単項演算子のオーバーロード

デフォルト引数でオーバーロードしようとしたけどうまくいかず…

#include <iostream>

using namespace std;

class Foo {
private:
  int i;

public:
  Foo(int i) : i(i) {};
  int to_i() { return i; }
  Foo &operator ++() {
    cout << "前置\n";
    ++i;
    return *this;
  }
  Foo &operator ++(int notused) {
    cout << "後置\n";
    i++;
    return *this;
  }
};

int main() {
  Foo foo(0);
  ++foo;
  cout << foo.to_i() << "\n";
  foo++;
  cout << foo.to_i() << "\n";
  return 0;
}


前置
1
後置
2