Kirill
не забываем что ноексепт принимает буль
Kirill
тоесть можно как указать что функция/метод не будет кидать експешн, как можно и явно указать,что будет
Kirill
например деструктору сказать, все ок, ты можешь кидать ексепшн и не умереть
Roman
я бы свернул must() и mustNot() вместе с експектом, чтобы меньше писать
тогда лучше ожидать true и возвращать bool из must / mustNot
ASSERT(cpMain.must())
ASSERT(cpAttached.must())
ASSERT(cpFailure.mustNot())
тогда получается что первый ASSERT на cpMain блокирует control flow и только позже получает boolean. mustNot() в таком случае должен вернуть true если checkpoint таймаутил, а must() наоборот, вернуть true если таймаута не было
Крылатый
http://foonathan.net/blog/2017/06/27/lazy-evaluation.html
Mikhail
Berkus
Deleted Account
Yury
Подскажите аналог promise из js в c++?
Крылатый
http://en.cppreference.com/w/cpp/thread/promise
Крылатый
Это?
Yury
нет
Yury
нужна однопоточная обертка для вызова колбека
Yury
https://learn.javascript.ru/promise
Yury
вот пример
Arseny
В javascript так future называют
Yury
я пробежался по std::async, promise, future, и как понял это обертки для многопоточного апи.
Yury
мне просто удобно вызов колбека хочется обернуть
Anatoly
Подскажите аналог promise из js в c++?
наверняка что-то должно найтись на гихабе, на коленке это выглядит так
std::async(std::launch::async, [](std::function<void()> success, std::function<void()> fail) {
try {
// async throwable process
success();
}
catch (...) {
fail();
}
}, []() {
}, []() {
});
Yury
Да, мне кажется много решений должно быть. Но решил спросить, вдруг более менее стандартизированное есть.
Arseny
Если просто callback, то это про lambda и std::function видимо.
Yury
httpGet('/article/promise/user.json')
.then(JSON.parse)
Yury
Вот пример из js.
Anatoly
Yury
httpGet возвращает промис
Yury
у промиса метод then, куда можно передать колбек
Anatoly
два колбека
Yury
да, но суть не в этом :)
RattenKong 🦧🐀🦍️
Yury
в таком апи можно строить удобные цепочки асинхронных вызовов
Yury
Посмотрю, спасибо.
Yury
да, это просто обертка над колбеком, все верно
Anatoly
вполне может быть
Yury
просто удобная, читабельная и т.д.
Крылатый
Yury
У меня с++ 11
Yury
cocos2d-x
Arseny
Не, then в std::future только планируется
Крылатый
Boobs твой выбор!
Arseny
Крылатый
Boost
Anatoly
Boost
а что там в бусте аналог JS Promise?
Крылатый
auto future = boost::async([](){return 42;}).then([](boost::future<int> future){return what_does_it_actually_mean(future.get());};
Anatoly
да, оно
Anatoly
а что там в случае исключения?
Anatoly
то есть future.get() выбросит исключение, если в процессе работы асинхронной функции было выброшено исключение
Anatoly
ok
Serge
Почему по С++ мало групп в телеграмме?
Dr. Friedrich
Мало?
Serge
Мало
Andrey
Мало
попроси @AlexFails он еще заведет )
Dr. Friedrich
Куда уж больше-то? pro.cxx, supapro, ultramegapro...
Serge
Нашел только эту и ещё одну мертвую с января
Andrey
Serge
Судя по названию супапро и ультрамега не про С++
Ruslan
а зачем тебе много?
Ruslan
лучше пускай одна где люди есть будет
Serge
Много не надо, но пару тройку не помешало бы
Yury
https://github.com/xhawk18/promise-cpp
Evgenii
Yury
такой вариант для промисов аля js нашел
Aragaer
... переписываюсь с саппортом pvs студии. Они тоже удивлены, что на нашем проекте их тулза сбоит.
Aragaer
строго по гайду это ровно две команды - трейсом получить файл strace_out, потом анализатором увидеть там что компилируется некий сишник
Aragaer
первый этап проходит, трейс ровно тот, какой ожидается
Aragaer
а второй этап не проходит - анализатор не понимает, что записанная в трейсе команда на компиляцию это команда на компиляцию
Крылатый
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0707r0.pdf
Крылатый
Не читаю лор(
Alexey
Навряд ли в с++20
🐙 Antony
У меня такое чувство, что Герб - очень знатный троль. Он обычно озвучивает какую-то крутую новую идею, пиарит её и... ждёт пока её сделают в C#/Rust/*.
После этого обкатанная идея переносится в С++
Крылатый
Стратегия!
ttldtor
Мне понравилось. Я бы даже C₂++ замутил для таких целей, чтобы обкатывать.
Berkus
лучше C²++
ttldtor
ну или так
Dr. Friedrich
D++
ttldtor
не, дишечка и так уже как полигон
Dmitry
ы
Andrei