Berkus
Vlad
Evgenii
Vlad
Олександр
:)
Evgenii
👍
Sergey
Не особо применимо в обычной жизни, но ознакомиться рекомендую)
Evgeniy
Anonymous
Это ещё почему?
Anonymous
Юзфлаги, актуальность софта
Roman
std::any из C++17 уже поддерживается основными компилями?
Roman
GCC, MSVC, CLang
Dumitru
Msvc ещё cpp14 не умеет толком
Dumitru
Я очень долго втыкал почему вижуалка мне подсвечивала constexpr
Roman
пытаюсь понять возможна ли подобная псевдо-конструкция в C++:
Validator<int, float, std::string> vld();
// should return false if anyTypeVar is neither int, nor float, nor std::string
vld.validate(anyTypeVar);
Dumitru
Ilya
А если темплейтный метод и тайп трейтом проверять аргумент?
Roman
определить как-бэ некий список типов который "принимается"
Roman
template method статичен, не примет любого типа аргумент во время исполнения
Dumitru
Есть другой вариант
Определи все функции для int, float, string
И одну которая будет принимать все (шаблон), вот она всегда будет возвращать False
Dumitru
Правда зачем
Roman
хочу просто при ловле исключений иметь некий список типов который определяет какого-типа исключения должны тригерить определённую логику, но C++ походу такого не реализуешь
Roman
грубо говоря, псевдо-код:
// попробуй выполнить someFunction
// если кинет length_error или domain_error то выполняй ламбду из onMatch
// иначе onMismatch
trial(someFunction, {std::length_error, std::domain_error})
trial.onMismatch(...)
trial.onMatch(...)
trial.execute(...)
Roman
есть оператор typeid(), есть std::type_info
Roman
но в целом всё-равно непонятно возможно ли подобное вообще
Evgenii
Roman
try catch?
я не настолько нуб)) просто try-catch в данном случае неприменим по причине асинхронности кода
Roman
захотелось попробовать экзотики и запилить некий сахар для асинхронного failure handling'а
Dr. Friedrich
Разве catch не работает с co_await?
Roman
это совсем в другую сторону..
Roman
суть в том что хотелось бы в идеале просто определить список типов, при котором асинхронная сущность должна повториться
Pepe 🐸
🦥Alex Fails
Есть у Реймонда Чена бложик "The Old New Thing"
🦥Alex Fails
🦥Alex Fails
Dogma
@admin
🦥Alex Fails
Спасибо
Anatoly
Александр
слушайте, а почему я в упор не вижу в бусте stacktrace? что в репозитории написано, что он существует, буст тоже последний (1.64)
🦥Alex Fails
Так у Антона он пока в разработке
Александр
ах вот оно что, спасибо
Roman
типа
stream
->retry([](const QVariant& err) {
// if error was expected then retry
if(errorIsExpected(err)) return true;
// otherwise don't retry and fail
return false;
})
->failure([](const QVariant& err) {...})
Roman
но тогда как быть с std::exception'ами? (на данный момент реализовано через жп, просто QVariant(exception.what()) )
Roman
с error code'ами всё просто, кидаем число из enum'а и всё, с классами исключений всё получается через жп
Олександр
Qt не любит исключений.
Roman
Qt не любит исключений.
вот и я теперь их начинаю "не любить". если ловлю в стриме exception, беру .what() - кладу в QVariant() и передаю обработчику.. но это наверное далеко от идеала
(стрим в данном контексте это асинхронный executable бросающий эвенты имеющий свойство завершаться, останавливаться и отменяться)
Roman
а вот если кидается какой-то кастомный Exception объект *MyOwnErrorType(...)* то я его просто превращаю в пустой QVariant ибо не известно как с кастомными работать
Roman
может определить некий error code enum в котором определить конкретный код стандартным exception типам как std::out_of_range, std::runtime_error, std::invalid_argument ?
ep
Кстати, почему в MSVC прокатывает std::exception("blabla")?
Любой другой компилятор скажет, что нет такого контруктора у exception.
Alignant
А в C# есть, мож в этом дело?
Alignant
И он путается :D
Ruslan
Roman
ибо нет в C++11 возможности указать:
request.retry({MyCustomTimeoutError, MyCustomGatewayError})
Roman
было бы возможно только с помощью std::any из C++17 насколько я понимаю
Alignant
Processor
здешние проблемы стандартов еще не самые ужасные, как в web
Processor
а именно front-end
🦥Alex Fails
Ой, всё😭 в жопу вротэнд. Пишу на таблицах с 2005 года
Ruslan
ahahaahha
Сережа
фронтенд на С++ https://www.webtoolkit.eu/wt/ru/
🦥Alex Fails
Vladislav
Roman
Сережа
насколько я понял оно такое поддерживает
Алдар
жс такой же кривой как и с++
Алдар
но делать нечего, все плюются и пишут на нем
Roman
не вижу логики честно говоря... веб приложения обычно состоят из трёх частей: file sever, application server и webclient (бд и т.д. не считаю)
в то время как application server можно писать хоть на C++ хоть на Go хоть на Python, PHP, Java, JavaScript и т.д. и т.п. - веб клиент всегда пишется на Javascript + HTML (HTML5)
Roman
веб-фронтэнд на C++? как это понимать? типа генерим HTML на сервере с помощью C++ как с древним подходом PHP?
Крылатый
Генерить HTML на сервере и щас норм подход, если страницы довльно тяжёлые.
Алдар
Сережа
а клиент на мобилках?
Сережа
я слышал конечно про реакт нейтив