`unique_lock`、`scoped_lock` 和 `lock_guard` 中指定的 mutex_type 的用例是什么?

What is the use case for mutex_type specified in `unique_lock`, `scoped_lock` and `lock_guard`?

用于保护 std::mutex 的 c++11 互斥 RAII 类型都有一个类型定义:

typedef Mutex mutex_type;

这个成员typedef有什么意义?起初我认为它可以用来概括创建一个对象来移动锁(在 unique_lock 的情况下)例如:

template<SomeLock>
void function(SomeLock in)
    SomeLock::mutex_type newMutex;
    //Do something

但我无法想象它的用途。

需要进一步注意的是,在 locks 的实现中似乎没有在任何地方使用它(至少在 VisualC++ 中没有)。

成员mutex_type的用例是什么?

每个模板参数都有一个类型别名在标准库中是很正常的。副手,我不记得 std 中的一个模板 没有 别名它的所有模板参数作为成员类型

在一组相关的 类 中为类型别名使用不同的名称可以很容易地将该组与其他 类 区分开来,例如对于 SFINAE

template<typename Lock, typename = std::void_t<Lock::mutex_type>>
void usesLock(Lock lock); // Substitution failure for most instantiations of Lock

它还允许您轻松指定适当类型的参数。

template<typename Lock>
void usesMutex(Lock::mutex_type & mut);