Я большой поклонник нового синтаксиса инициализатора if-оператора в C ++ 17, и я склонен использовать его везде, где это имеет смысл.Я также использую новый std::scoped_lock
и хотел бы объединить две новые функции.Однако я не могу понять какой-либо «лучший» синтаксис, чем следующий:
if (std::scoped_lock<std::mutex> guard(mutex_); true) {
// Do something.
}
Обратите внимание, как я должен использовать ключевое слово true
в условной стороне оператора if.Я бы предпочел просто поместить туда guard
, но при попытке получить следующую ошибку:
значение типа 'std :: scoped_lock' не может быть контекстно преобразовано в 'bool'
std::scoped_lock
не имеет никаких других функций-членов, которые я мог бы вызвать, чтобы получить соответствующее логическое значение.
Есть ли какой-либо "лучший" синтаксис для использования, чем ключевое слово true
?Или какой-то другой способ прояснить, что происходит?(Или, возможно, использование scoped_lock
таким способом - плохая идея?)
Редактировать:
Мне известна стандартная практика только вложения замковв пределах их собственной области, используя {
и }
.Я просто предпочитаю этот новый синтаксис, потому что я никогда не был большим поклонником одной открытой скобки.