Berkus
О Луна, они это всерьёз восприняли.
а ты как думал! сириус бизнес
Evgenii
Больше о3 нет же
в шланге есть
Vlad
в шланге есть
мля. нету.
Vlad
в шланге есть
почитай чуть выше
Олександр
:)
Evgenii
👍
Sergey
Не особо применимо в обычной жизни, но ознакомиться рекомендую)
Anonymous
Это ещё почему?
Anonymous
Юзфлаги, актуальность софта
Roman
std::any из C++17 уже поддерживается основными компилями?
Roman
GCC, MSVC, CLang
Dumitru
Msvc ещё cpp14 не умеет толком
Dumitru
Я очень долго втыкал почему вижуалка мне подсвечивала constexpr
Ilya
Msvc ещё cpp14 не умеет толком
И cpp98 тоже если быть формалистом
Roman
пытаюсь понять возможна ли подобная псевдо-конструкция в C++: Validator<int, float, std::string> vld(); // should return false if anyTypeVar is neither int, nor float, nor std::string vld.validate(anyTypeVar);
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
но в целом всё-равно непонятно возможно ли подобное вообще
Roman
try catch?
я не настолько нуб)) просто try-catch в данном случае неприменим по причине асинхронности кода
Roman
захотелось попробовать экзотики и запилить некий сахар для асинхронного failure handling'а
Dr. Friedrich
Разве catch не работает с co_await?
Roman
это совсем в другую сторону..
Roman
суть в том что хотелось бы в идеале просто определить список типов, при котором асинхронная сущность должна повториться
Pepe 🐸
Тут меня попросили выложить опрос. Думаю, что будет интересно всем. Вот дословная цитата (орфографию поправил): "Месяц назад мы в Digital Banana задались вопросом: откуда берутся программисты, и какой у них бэкграунд? В поисках ответа мы начали разработку социологического исследования по этой теме. Выпустив предварительную версию и получив конструктивную критику от коллег по индустрии, мы представляем итоговую версию опроса. На прохождение опроса нужно потратить 10-15 минут. Ссылка на опрос: https://goo.gl/9Xr9bJ Задачи опроса: - понять, когда люди начали изучать программирование; - как относятся к разным видам образовательных инициатив; - как оценивают роль высшего образования; - как относятся (и владеют) математикой в программировании; - зависит ли мнение по этим вопросам от разницы поколений и статуса разработчика (начинающий, средний, старший)". Если у вас есть какие-то замечания или предложения по улучшению теста – пишите мне, @AlexFails, и я передам авторам. Как будут известны результаты – я вам сообщу. #survey
А где посмотреть резалты какие нибудь?
🦥Alex Fails
Есть у Реймонда Чена бложик "The Old New Thing"
🦥Alex Fails
🦥Alex Fails
Dogma
@admin
🦥Alex Fails
Спасибо
Александр
слушайте, а почему я в упор не вижу в бусте stacktrace? что в репозитории написано, что он существует, буст тоже последний (1.64)
🦥Alex Fails
Так у Антона он пока в разработке
Александр
ах вот оно что, спасибо
Roman
вообще говоря, не вижу ничего нереального, твоя идея легко достигается с помощью http://en.cppreference.com/w/cpp/error/exception_ptr
я чёт в ступор вошёл с error handling'ом в QS считай стрим который запускается в случае неожиданной ошибки (создан при помощи failure оператора) получает ошибку в качестве QVariant stream->failure([](const QVariant& err) {...}) и retry оператор тоже должен оперировать QVariant'ами
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
ep
мйкрософт обычно забивают на стандарты и пишут как им хочется
Меня особенно вымораживают typename, которые можно пропускать.
Roman
я пытаюсь добиться нечто подобного: // http.get returns a stream that's either closed when the results arrive or fails when an error occures request = http.get("server.org/resource") // retry the get operation as long as the error is either http.Timeout or http.BadGateway for max. 3 times request.retry({http.Timeout, http.BadGateway}, 3) // execute next stream when data arrives request.attach(...) // catch unexpected errors and execute failure handling stream // will be called if either a unexpected error was thrown (non-timeout as well as non-badgateway) such as http.NotFound // or if after 3 times of retrial there still was no success request.failure(...) легче всего данное реализовать на error code'ах ибо типы можно определить простыми integer'ами и сравнивать их довольно просто enum Error { Timeout = 1 BadGateway = 2, NotFound = 3 } но как быть с кодом который "не поддерживает" данный подход и бросает инстанции каких-то кастомных error классов типа MyCustomTimeoutError.. в таком случае я их просто превращаю в пустой QVariant объект, т.е. в неизвестную ошибку..
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
Сережа
насколько я понял оно такое поддерживает
Алдар
жс такой же кривой как и с++
Алдар
но делать нечего, все плюются и пишут на нем
Roman
не вижу логики честно говоря... веб приложения обычно состоят из трёх частей: file sever, application server и webclient (бд и т.д. не считаю) в то время как application server можно писать хоть на C++ хоть на Go хоть на Python, PHP, Java, JavaScript и т.д. и т.п. - веб клиент всегда пишется на Javascript + HTML (HTML5)
Roman
веб-фронтэнд на C++? как это понимать? типа генерим HTML на сервере с помощью C++ как с древним подходом PHP?
Крылатый
Генерить HTML на сервере и щас норм подход, если страницы довльно тяжёлые.
Stas
веб-фронтэнд на C++? как это понимать? типа генерим HTML на сервере с помощью C++ как с древним подходом PHP?
Зажрались сударь. Задача вам дан микроконтроллер на борту 64 КилоБайт ОЗУ 30 заняты под таблицы обработки входных данных, нужно написать ВебМорду. И да С++ нет, есть чистые Си.
Roman
видимо генерят html с помощью С++
вот поэтому я и спрашиваю, а как же тогда на нём пилить single page apps
Сережа
а клиент на мобилках?
Сережа
я слышал конечно про реакт нейтив