Size: a a a

2020 July 14

АВ

Александр Водянников... in pro.cxx
А, ну да - в данном случае ничего не проверяет
источник

ПК

Побитый Кирпич... in pro.cxx
Alex
Но вы мне скажите, так будет работать или нет?) Вопрос в том, когда вызовется деструктор lock_guard.
После выхода из блока ифа
источник

A

Alex in pro.cxx
у него скоуп - весь comma expression, или только та часть, где он объявлен?
источник

A

Alex in pro.cxx
Pavel Kotov
Но тут скоуп больше, чем в оригинальном варианте
кстати, да, это минус
источник

SS

Sergey Sobolev in pro.cxx
Alex
Но вы мне скажите, так будет работать или нет?) Вопрос в том, когда вызовется деструктор lock_guard.
Можно сделать свой класс и залогировать ctor и dtor
источник

SS

Sergey Sobolev in pro.cxx
И еще лог в конец if
источник

O

Ofee in pro.cxx
Alex
у него скоуп - весь comma expression, или только та часть, где он объявлен?
источник

AT

Andrew Titov in pro.cxx
Alex
А можно вот таким образом использовать operator, ?
if (std::lock_guard lock(mutex), a && b) {}


Идея в том, чтобы вычислить и проверить a && b (bool), но сделать это под локом.
Что ж, оно не компилируется.
источник

АВ

Александр Водянников... in pro.cxx
Там же ; надо разделять
источник

A

Alex in pro.cxx
нет, весь смысл в том, чтобы не использовать if с инициализатором, а использовать простой if с comma operator
источник

AT

Alexander T in pro.cxx
Чтобы comma работала, надо добавить скобки и убрать имя lock
источник

O

Ofee in pro.cxx
Alex
нет, весь смысл в том, чтобы не использовать if с инициализатором, а использовать простой if с comma operator
Наверное, нужно завести функцию make_lock_guard и вызывать её перед запятой, тогда должно компилироваться и работать ожидаемым образом. Наверное
источник

AT

Alexander T in pro.cxx
Но всё равно lock_guard протухнет до начала if, кажется. Иначе эту идиому давно бы открыли
источник

АВ

Александр Водянников... in pro.cxx
А вообще - зачем
источник

АВ

Александр Водянников... in pro.cxx
Ну вызвать просто и затем делать свою магию
источник

IZ

Ilia Zviagin in pro.cxx
Alexander T
Но всё равно lock_guard протухнет до начала if, кажется. Иначе эту идиому давно бы открыли
Так там он и не нужен уже. Он протухнет по концу выражения.
источник

🎄T

🎄🎊 R 🎅 Tb| ✡️ 🎊🎄... in pro.cxx
Alexander T
Но всё равно lock_guard протухнет до начала if, кажется. Иначе эту идиому давно бы открыли
Ну просто последовательность вычислений у запятой до 17 стандарта не была определена
источник

AT

Alexander T in pro.cxx
Ilia Zviagin
Так там он и не нужен уже. Он протухнет по концу выражения.
А, точно, если он нужен только для условия. Тогда профит
источник

AT

Andrew Titov in pro.cxx
🎄🎊 R 🎅 Tb| ✡️ 🎊🎄
Ну просто последовательность вычислений у запятой до 17 стандарта не была определена
источник

A

Alex in pro.cxx
Я не понимаю, почему не компилится и почему именно такие ошибки, уже все варианты скобок перепробовал https://godbolt.org/z/T8h9vK
источник