>>657
しかもそれだけでいいのなら
template<class T>
class property {
  T obj;
 public:
  property() : obj(T()) {}
  property& operator=(const T& x) {obj = x; return *this;}
  operator const T&() const {return obj;}
  operator T&() {return obj;}
};
でいいんじゃないか?