public:
MutexPtr(T *d, Mutex &m): mutex(new MutexLock(m)), data(d) { }
T &operator*() const { return *data; }
T *operator->() const { return data; }
public:
MutexPtr(T *d, Mutex &m): mutex(new MutexLock(m)), data(d) { }
T &operator*() const { return *data; }
T *operator->() const { return data; }