thisによると、unique_lock
a を宣言することで再帰ロックに使用できstd::unique_lock<std::recursive_mutex>
、実際には正常にコンパイルされます。
ただし、コード (gcc 4.8.2 および 4.9.0) を調べると、ロック メソッド自体を実装するのではなく、ロック メソッド自体を実装しているようにunique_lock
見えます。_Mutex.lock
void
lock()
{
if (!_M_device)
__throw_system_error(int(errc::operation_not_permitted));
else if (_M_owns)
__throw_system_error(int(errc::resource_deadlock_would_occur));
else
{
_M_device->lock();
_M_owns = true;
}
明らかに、これによりミューテックスの再帰的ロックが防止され、実際、再帰的にロックしようとするとresource_deadlock_would_occur
例外がスローされます。
ここに何かが欠けていますか、これはバグですか、それともunique_lockのドキュメントが間違っていますか?
ティア!!!