Constantine
нет
Constantine
2-версии xor eax, eax
vladislav
оптимизация головного мозга, кмк
Александр
2-версии xor eax, eax
там if с ошибкой, сверь
Constantine
там if с ошибкой, сверь
это специально
Александр
а
Constantine
экстремальный случай
Александр
то есть устраивает unreachable?
Matwey
xor eax, eax это просто очиста регистра же
Constantine
оптимизация головного мозга, кмк
это отбрасывание всех проверок на null в далеких вызовах, например
Constantine
то есть устраивает unreachable?
то есть это ровно то, что я хочу, видимо
Александр
что-то типа ub_assert
Constantine
ну мне нравится синтаксис std::defined_behavior или std::undefined_behavior
Крылатый
Что за хуйня))
Александр
🤣
Anonymous
std:: что эта штука значит ?
Constantine
что-то типа ub_assert
https://godbolt.org/g/H31oG1
Александр
std:: что эта штука значит ?
это отсылка к @supapro
Anonymous
ну мне нравится синтаксис std::defined_behavior или std::undefined_behavior
потому что правильный синтаксис std::undefined_behaviour
Constantine
Constantine
это на самом деле релизная версия для большинства assert-ов
Anonymous
http://eel.is/c++draft/intro.defs#defns.impl.defined
Это американцы писали, они неграмотные тут все поголовно :)
Constantine
Ну вот тут говорят, что в gcc реализовано
Constantine
https://godbolt.org/g/H31oG1
🐙 Antony
int to_digit_D2(int c) [[expects: '0' <= c && c <= '0']] { return (int)(c - '0'); }
Constantine
хм...
Constantine
я просто подумал, что для текущего кода это практически бесплатная штука, потому что можно любой assert переводить в релизе в такое условие
Constantine
с контрактами это переписывать прямо таки
Constantine
и потом, я могу вспомнить примеры, когда контракт вот просто так не напишешь
🐙 Antony
int to_digit_D2(int c) [[expects: '0' <= c && c <= '0']] [[ensures res: res < 10 && res >= 0]] { return (int)(c - '0'); } ^ и вызывающий код тоже получит хинты к оптимизациям Но да, с виртуальными функциями оно не совсем идеально работает
Constantine
Я помню условия, которые наложены на возврат вызова на переданных объектах
🐙 Antony
да, но и с undefined соптимизировать в таких случаях не получится
🐙 Antony
кажется...
Constantine
как раз получится, потому что там грубо говоря гарантируется, что optional передан в non-empty state
Constantine
о, нашел пример for (auto proportion : preferences) { ASSERT_ARGUMENT(proportion >= 0 || proportion < -100.0); if (proportion < -100.0) //merged cell continue;
Constantine
проверку можно заменить на проверку знака
🐙 Antony
for (auto proportion : preferences) { [[assert: proportion >= 0 || proportion < -100.0]]; if (proportion < -100.0) //merged cell continue;
🐙 Antony
кажется, что функционал похож 1:1
Constantine
а, понятно
Никита
А в proposal по контрактам предполагается что в случае нарушения контракта можно кинуть исключение? Мой текущий макрос ассерта примерно такой CONTRACT_CHECK(condition, exception_type, message) , и если в контрактах не будет возможности кинуть исключение нужного типа, то я только потеряю в функциональности от таких контрактов
Никита
в первой ревизии proposal я увидел только, что можно будет написать violation handler, в котором и можно кинуть исключение. Но, как я понял, таким образом получится кинуть только один тип исключения
🐙 Antony
в первой ревизии proposal я увидел только, что можно будет написать violation handler, в котором и можно кинуть исключение. Но, как я понял, таким образом получится кинуть только один тип исключения
violation handler локален для единицы трансляции. Соответственно его (по идее) можно делать разным для разных cpp файллов и кидать в разных файлах разные исключения
Никита
Не совсем удобно, но все же лучше чем просто глобальный handler
🐙 Antony
Глобальный хендлер нельзя из соображений безопасности
🐙 Antony
По крайней мере так авторы предложения говорят )
Anonymous
А произвольный тип данных, объект представить как vector<uint8_t> с рефлексией завезут?
Дмитрий ⬡
А произвольный тип данных, объект представить как vector<uint8_t> с рефлексией завезут?
> рефлексия её вряд ли скоро завезут даже в обрубленном виде. А смотреть на объекты как на unsigned char[] можно и сейчас
Никита
есть же надежда, что как TS в c++20 немного рефлексии появится
Anonymous
> рефлексия её вряд ли скоро завезут даже в обрубленном виде. А смотреть на объекты как на unsigned char[] можно и сейчас
ну если это структура без всяких указателей, то да, а что нибудь по сложнее? mesgpack-c неплохо это делает
Дмитрий ⬡
ну если это структура без всяких указателей, то да, а что нибудь по сложнее? mesgpack-c неплохо это делает
Что-то я не вижу рефлекшена, я вижу просто хорошую запись по полям. Можно пример?)
Anonymous
Что-то я не вижу рефлекшена, я вижу просто хорошую запись по полям. Можно пример?)
да рефлекшен я предположил) вопрос был в том, планируют ли это добавить и где
Дмитрий ⬡
Планируют да, но я не читал конкретно, после статьи-обзора метаинтерфейсов пошёл успокоительное пить)
Дмитрий ⬡
да рефлекшен я предположил) вопрос был в том, планируют ли это добавить и где
Я посмотрел — там "рефлекшен" уровня "Подставьте вот этот макрос со всеми именами полей". Это не считается))
Рома
сори это была мышка
Vladislav
сори это была мышка
Опасно, так и забанить могут
Vladislav
читайте правила, пожалуйста
Yuri
Есть шанс востановить часть реализаций методов из бинарника, если в нём есть дебаг символы, и я спокойно могу посмотреть заголовки классов?
Yuri
Спасибо
Yuri
Так это уже готовый код, а как они это сделали? Меня сам способ интересует
PRoSToC0der
с помощью IDA
Yuri
Не руками же это делать
Александр
RattenKong 🦧🐀🦍️
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0984r0.pdf щто думаете?
Egor
1 апреля?
RattenKong 🦧🐀🦍️
Чел хочет задеприкейтить func_ptr()() и заменить функторы операций(+, -) и тд лямбдами
RattenKong 🦧🐀🦍️
1 апреля?
Оно в мейлинг листе...
Anonymous
в мейлинг листе-то шутить нельзя, конечно.
tdiff
Привет Подскажите чатик по сетевому программированию пожалуйста
Anonymous
Привет Подскажите чатик по сетевому программированию пожалуйста
Другие чаты 🕶 @ProCxx – чат для серьезных вопросов; 📚 @ProCxxLib – библиотека книг по языку C++, проектированию и программированию; 📰 @ProCxxNews – новости из мира C++, интересные статьи и пр. 🏗 @ProAlgorithms – чат по обсуждению вопросов проектирования, архитектуры программного обесепечения; 🌔 @ProLua – чатик по скриптовому языку Lua; 🤗 @fludpac – флудилка, чат по обсуждению всего; 🗯 @xthon – канал с цитатами участников pro.* 👥 @prodot – канал pro.*; 🌞 @flood – общий флуд канала @prodot; 🎓 supapro.cxx – чат помощи для новичков; 🌿 pro.git – чат по обсуждению Git; ⚔ pro.cxx.holywars – чат для любителей холиваров; 🕷pro.net – чат по .NET Framework; 🐧pro.linux – чат по Линуксу; 👾pro.linux.old – самая первая группа из коллекции pro.*. Вход по инвайтам, т.к. создатель группы удалился из telegram; 🖼 Opengl / opencl / Vulkan / etc gamedev – no-flood-чат по опенглу и пр. Читайте правила при входе! Пока не в системе pro.* English chats ❤️ @undertale_chat – chat about the Undertale game; 🇬🇧 pro.english – chat about learning English.
tdiff
Другие чаты 🕶 @ProCxx – чат для серьезных вопросов; 📚 @ProCxxLib – библиотека книг по языку C++, проектированию и программированию; 📰 @ProCxxNews – новости из мира C++, интересные статьи и пр. 🏗 @ProAlgorithms – чат по обсуждению вопросов проектирования, архитектуры программного обесепечения; 🌔 @ProLua – чатик по скриптовому языку Lua; 🤗 @fludpac – флудилка, чат по обсуждению всего; 🗯 @xthon – канал с цитатами участников pro.* 👥 @prodot – канал pro.*; 🌞 @flood – общий флуд канала @prodot; 🎓 supapro.cxx – чат помощи для новичков; 🌿 pro.git – чат по обсуждению Git; ⚔ pro.cxx.holywars – чат для любителей холиваров; 🕷pro.net – чат по .NET Framework; 🐧pro.linux – чат по Линуксу; 👾pro.linux.old – самая первая группа из коллекции pro.*. Вход по инвайтам, т.к. создатель группы удалился из telegram; 🖼 Opengl / opencl / Vulkan / etc gamedev – no-flood-чат по опенглу и пр. Читайте правила при входе! Пока не в системе pro.* English chats ❤️ @undertale_chat – chat about the Undertale game; 🇬🇧 pro.english – chat about learning English.
хорошая попытка
🦥Alex Fails
tdiff
@pro_prog
спасибо
Yura
ребят, а если мы хукаем виндовую функцию, мы можем подменить результат ее работы?
Yura
то есть например сымитировать, что функция проработала нормально и вернуть 1
Yura
100% ?
Constantine
Constantine
по крайней мере за все известные мне механизмы такого перехвата