特にleveldbのソースコードを読んでいます。ミューテックスロックについて。
この宣言を見つけました:
class SCOPED_LOCKABLE MutexLock {
public:
explicit MutexLock(port::Mutex *mu) EXCLUSIVE_LOCK_FUNCTION(mu)
: mu_(mu) {
this->mu_->Lock();
}
~MutexLock() UNLOCK_FUNCTION() { this->mu_->Unlock(); }
private:
port::Mutex *const mu_;
// No copying allowed
MutexLock(const MutexLock&);
void operator=(const MutexLock&);
};
が空として定義されていることがわかったSCOPED_LOCKABLE
のに、なぜそれをクラス宣言で使用するのですか?