Exceptional C++ Styleの「汎用コールバック」のところに、こんなコードが乗ってるんですが、
callbackのoperator()をconstにしていい理由がよくわかりません。

A::foo()がconstではないのに、なぜoperator()はconstでいいんでしょうか?

struct A { void foo() /* const */ {} };

template <class T, void (T::*F)()> class callback {
public:
  callback(T& t) : object(t) {}
  void operator()() const { (object.*F)(); }
private:
  T& object;
};

int main() {
  A a;
  callback<A, &A::foo> cb(a);
  cb();
}

メンバ変数objectが、値でなく参照だから?
おしえてくださいませ。