Size: a a a

Конференция C++ Russia

2020 February 20

AV

Alexey Veselovsky in Конференция C++ Russia
а кто-то перепутал MSVS с МСВС...
источник

DK

Denis Kormalev in Конференция C++ Russia
Alexey Veselovsky
а кто-то перепутал MSVS с МСВС...
источник

AV

Alexey Veselovsky in Конференция C++ Russia
Antony Polukhin
И-и-и-и-и... это стандартный уровень веселья. Ничего выдающегося
шести часов маловато будет для такого веселья 🙂 но будет познавательно, да. 😄
источник

AV

Alexey Veselovsky in Конференция C++ Russia
там даже gcc 7 от gcc 8 отличаться будет эффектами. иногда. в некоторых случаях.
источник
2020 February 21

AP

Antony Polukhin in Конференция C++ Russia
Alexey Veselovsky
там даже gcc 7 от gcc 8 отличаться будет эффектами. иногда. в некоторых случаях.
А иногда они не отличаются, но дают совсем чудные результаты, из-за чего ещё веселее:

https://github.com/boostorg/container/issues/131
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91981
https://bugs.llvm.org/show_bug.cgi?id=43562
источник

MM

Mikhail Matrosov in Конференция C++ Russia
Александр Караев
Ну, перегрузка для && - вообще редкий случай. Но в шаблонном коде с F&& f ведь пишут std::invoke(std::forward<F>(f)) (акцент на forward), чтобы вызвался нужный operator (), тут практически тоже самое
forward нужен, чтобы вернуть категорию аргумента функции. если параметр передаётся по значению, то категория аргумента утеряна, её не восстановить. ты применяешь к параметру move и делаешь из него rvalue. но почему это более правильно, чем оставить его как lvalue? в случае с forward всё ясно - правильно то, как было в точке вызова (где передаётся аргумент). в твоём же примере - не ясно. если у метода &/&&-перегрузка, то кто сказал, что нужно вызвать именно &&-версию? чем она лучше, чем &-версия?
источник

AV

Alexey Veselovsky in Конференция C++ Russia
неплохо! интересно, что там у интела?
источник

AV

Alexey Veselovsky in Конференция C++ Russia
(походу icc не поддерживает санитайзеры.. как так вообще?)
источник

MM

Mikhail Matrosov in Конференция C++ Russia
Mikhail Matrosov
forward нужен, чтобы вернуть категорию аргумента функции. если параметр передаётся по значению, то категория аргумента утеряна, её не восстановить. ты применяешь к параметру move и делаешь из него rvalue. но почему это более правильно, чем оставить его как lvalue? в случае с forward всё ясно - правильно то, как было в точке вызова (где передаётся аргумент). в твоём же примере - не ясно. если у метода &/&&-перегрузка, то кто сказал, что нужно вызвать именно &&-версию? чем она лучше, чем &-версия?
окей, я посмотрел код коллбека... вот извращенцы 😆
  R Run(Args... args) && {
   // Move the callback instance into a local variable before the invocation,
   // that ensures the internal state is cleared after the invocation.
   // It's not safe to touch |this| after the invocation, since running the
   // bound function may destroy |this|.
   OnceCallback cb = std::move(*this);
   PolymorphicInvoke f =
       reinterpret_cast<PolymorphicInvoke>(cb.polymorphic_invoke());
   return f(cb.bind_state_.get(), std::forward<Args>(args)...);
 }
источник

MM

Mikhail Matrosov in Конференция C++ Russia
Mikhail Matrosov
forward нужен, чтобы вернуть категорию аргумента функции. если параметр передаётся по значению, то категория аргумента утеряна, её не восстановить. ты применяешь к параметру move и делаешь из него rvalue. но почему это более правильно, чем оставить его как lvalue? в случае с forward всё ясно - правильно то, как было в точке вызова (где передаётся аргумент). в твоём же примере - не ясно. если у метода &/&&-перегрузка, то кто сказал, что нужно вызвать именно &&-версию? чем она лучше, чем &-версия?
окей, можно считать, что &&-версия предпочтительней, т.к. для неё есть большее пространство для маневра в реализации
источник

MM

Mikhail Matrosov in Конференция C++ Russia
но это всё равно, конечно, довольно специфический пример ))
источник

AV

Alexey Veselovsky in Конференция C++ Russia
интересно как то же сделано в какой-нибудь java - там же не только плюсы поддерживаются
источник

AV

Alexey Veselovsky in Конференция C++ Russia
в идеале, в примере иметь бы три реализации мастера (на js/java/c++) и три воркера.
источник

AV

Alexey Veselovsky in Конференция C++ Russia
жаль там питон не поддерживается.
источник

AK

Alexey Kuznetsov in Конференция C++ Russia
Alexey Veselovsky
интересно как то же сделано в какой-нибудь java - там же не только плюсы поддерживаются
Если интересно, могу завтра скинуть, как это примерно выглядит)
источник

AV

Alexey Veselovsky in Конференция C++ Russia
Alexey Kuznetsov
Если интересно, могу завтра скинуть, как это примерно выглядит)
да, я бы глянул 🙂
источник

FO

FORTRAN ONE LOVE in Конференция C++ Russia
Alexey Veselovsky
(походу icc не поддерживает санитайзеры.. как так вообще?)
icc вообще туп как пробка. В нем варнингов на фортране почти нет.
И, вроде, для такой вещи у них есть parallel inspector
источник

AK

Alexey Kuznetsov in Конференция C++ Russia
Alexey Veselovsky
да, я бы глянул 🙂
вот реализация на js для mojo интерфейса с хэндлами) https://cs.chromium.org/chromium/src/extensions/renderer/resources/keep_alive.js?q=function+KeepAlive()&sq=package:chromium&g=0&l=15
Единственное это реализация не для echo server, а внутренняя из хрома, но смысл того, как это выглядело бы, примерно понятен.
источник

AV

Alexey Veselovsky in Конференция C++ Russia
Alexey Kuznetsov
вот реализация на js для mojo интерфейса с хэндлами) https://cs.chromium.org/chromium/src/extensions/renderer/resources/keep_alive.js?q=function+KeepAlive()&sq=package:chromium&g=0&l=15
Единственное это реализация не для echo server, а внутренняя из хрома, но смысл того, как это выглядело бы, примерно понятен.
Спасибо! А на Java что-нибудь есть?
источник

AK

Alexey Kuznetsov in Конференция C++ Russia
Alexey Veselovsky
Спасибо! А на Java что-нибудь есть?
источник