Как правильно использовать std :: scoped_lock в инициализаторе оператора if? - PullRequest
0 голосов
/ 23 февраля 2019

Я большой поклонник нового синтаксиса инициализатора 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 таким способом - плохая идея?)

Редактировать:

Мне известна стандартная практика только вложения замковв пределах их собственной области, используя { и }.Я просто предпочитаю этот новый синтаксис, потому что я никогда не был большим поклонником одной открытой скобки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...