あの有名なVNCのソースを見ていて疑問がわきました。

class _OMNITHREAD_NTDLL_ omni_mutex_lock {
omni_mutex& mutex;
public:
omni_mutex_lock(omni_mutex& m) : mutex(m) { mutex.lock(); }
~omni_mutex_lock(void) { mutex.unlock(); }
private:
// dummy copy constructor and operator= to prevent copying
omni_mutex_lock(const omni_mutex_lock&);
omni_mutex_lock& operator=(const omni_mutex_lock&);
};
上記クラスのコンストラクタで引数omni_mutex&mを受け取りomni_mutexのコンストラクタに渡しています
ここでomni_mutexのコンストラクタに引数omni_mutex&を受け取る物はありません。
const omni_mutex&を受け取る物ならありますがこれはコピーコンストラクタのダミー定義だけです
omni_mutex_lock(omni_mutex& m) : mutex(m) { mutex.lock(); }のmutex(m)はエラーにならないのですか?