Как правильно написать MutexLocker?
Ваш вариант не пройдет - мьютекс будет уничтожен сразу же после создания. Строго говоря, в C++ нет такого понятия "анонимный экземпляр", есть "временный экземпляр".
Для именованного экземпляра гарантируется уничтожение при выходе за из области видимости - составного оператора {}.
А чем не угодил std::lock_guard?